WinForm始終置頂並獲取焦點
阿新 • • 發佈:2017-05-18
cnblogs sta dea mos pan 方法 bsp eve activate
使一個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始終置頂並獲取焦點