1. 程式人生 > >WinForm始終置頂並獲取焦點

WinForm始終置頂並獲取焦點

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始終置頂並獲取焦點