现在的位置: 首页 > 综合 > 正文

让窗体获得焦点,一定会有您用到的时候

2018年04月03日 ⁄ 综合 ⁄ 共 1108字 ⁄ 字号 评论关闭

开发环境:Visual Studio .NET 2005 下的Windows Form Application

 

应用场景: 当我们有个窗体中的数据发生了变化而此窗体又没有获得焦点(不是用户操作的当前窗口)的时候,我们希望它获得焦点,这样用户就可以立刻发现它上面的数据发生了变化。

 

新建一个Window应用程序,会建立Form1,再添加一个Timer(timer1),设置如下属性:

 

 

然后添加timer1的Tick事件函数,完整代码如下:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

 

namespace Test

{
    public partial class PlayVoice : Form
    {
        public PlayVoice()
        {
            InitializeComponent();
        }

        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "GetForegroundWindow", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
        public static extern IntPtr GetF();             //获得本窗体的句柄
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
        public static extern bool SetF(IntPtr hWnd);    //设置此窗体为活动窗体

 

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (this.Handle != GetF())           //如果本窗口没有获得焦点
                SetF(this.Handle);                //设置本窗口获得焦点
        }
    }
}

 

运行看看,你会发现当Tick事件发生时,本窗口总会跳出来告诉你--我获得焦点了

抱歉!评论已关闭.