使一个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始终置顶并获取焦点