欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现让窗体获得焦点的方法示例

程序员文章站 2023-12-10 08:40:22
本文实例讲述了c#实现让窗体获得焦点的方法。分享给大家供大家参考,具体如下: 开发环境:visual studio .net 2005 下的windows form ap...

本文实例讲述了c#实现让窗体获得焦点的方法。分享给大家供大家参考,具体如下:

开发环境:visual studio .net 2005 下的windows form application

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

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

C#实现让窗体获得焦点的方法示例

然后添加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事件发生时,本窗口总会跳出来告诉你--我获得焦点了

更多关于c#相关内容感兴趣的读者可查看本站专题:《c#窗体操作技巧汇总》、《c#数据结构与算法教程》、《c#常见控件用法教程》、《c#面向对象程序设计入门教程》及《c#程序设计之线程使用技巧总结

希望本文所述对大家c#程序设计有所帮助。