WinForm始终置顶并获取焦点

Posted 米斯特唐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm始终置顶并获取焦点相关的知识,希望对你有一定的参考价值。

 使一个Winform始终置顶很简单,只要将这个Form的TopMost属性设置为True即可,但是强制让其获取焦点就比较麻烦了。

最开始的想法在Deactivate事件(Form处于非活动状态时)中,加入如下代码:

            this.Activate();//this为当前窗体
            this.Focus();

    但是发现断点调试的时候OK,但是一旦取消断点,运行起来就发现不行了。最后想到用Timer控件来完成这样的功能。发现使用Timer后,就可以使Form永久的处于活动状态了。具体方法如下:

    1 在窗体中加入Timer控件,设置interval:100(或者50, 根据个人喜好 ^_^),记得不要将Enable设置为True。

    2 在Deactivate事件中,添加代码:Timer1.Start();

    3 在Timer的Tick事件中,加入如下代码:

            this.Activate();//this为当前窗体
            this.Focus();
            timer1.Stop();

    最后,一定要注意的是Timer的开启和关闭计时的时机,如果只有Start没有Stop的话,那么此Form中别的事情就不要干了 呵呵。 整个代码如下:

   

    private void Form1_Deactivate(object sender, EventArgs e)
          {
              timer1.Start();
          }
          
          private void timer1_Tick(object sender, EventArgs e)
          {
              this.Activate();
              this.Focus();
              timer1.Stop();
          }

(对于提示框很好用)如:按回车可以直接关闭提示框。

 

以上是关于WinForm始终置顶并获取焦点的主要内容,如果未能解决你的问题,请参考以下文章

winform如何让弹出窗口始终置于程序最顶层

C# Winform 控件或窗体失去焦点时,获取键盘输入数据(我用winform获取另一个窗口的数据)

winform 如何实现鼠标位置获取picturebox的焦点,然后焦点放大

Winform中Treeview控件失去焦点,如何将选择的节点还设置为高亮显示?

winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623

C# winform 程序,在用SaveFileDialog选择完路径后,主界面如何置顶?