TopMost 相信很多人都用過,msdn的解釋如下:
如果你設置了Form的TopMost為true的話,那么窗體就會被顯示為最底層窗體.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.TopMost = true; } }
這個form很簡單,在Load的時候將自己的TopMost 設置為true。
如果你直接運行程序的話,沒有任何問題,可是如果你要調試的話!!!
為了突出,我在Form上添加了一個按鈕,然后注冊了Click 事件.
下面是調試后的截圖:
你發現了問題了嗎?
斷點在button1_Click 里面執行了,可是由於Form的TopMost屬性,所以你無法看到代碼的執行,而且更糟糕的是由於Form 正在被調試,所以Form1的狀態是未響應,這意味着你無法拖動Form1,無法縮小Form1,Form1 目前不響應任何windows消息。
如果你的Form不僅設置了TopMost 為true,並且狀態是最大化。那么悲劇了,調試幾乎不可能。
那么VS為什么不在調試的時候將要調試的Form的TopMost設置為False,然后在調試結束后設置為true?
我認為微軟肯定是認為自己的程序(VS)不應該改變被調試程序的任何屬性。
這個問題的解決方法很簡單: 條件編譯
private void Form1_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; #if !DEBUG this.TopMost = true; #endif }