項目界面設計的時候,發現在設置button的enabled=false后,原本設計的字體顏色跟預設的不一樣,查了一些資料后,在網上看到這樣一段代碼:
[System.Runtime.InteropServices.DllImport("user32.dll")] public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int wndproc); [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern int GetWindowLong(IntPtr hWnd, int nIndex); public const int GWL_STYLE = -16; public const int WS_DISABLED = 0x8000000; public static void SetControlEnabled(Control c, bool enabled) { if (enabled) { SetWindowLong(c.Handle, GWL_STYLE, (~WS_DISABLED) & GetWindowLong(c.Handle, GWL_STYLE)); } else { SetWindowLong(c.Handle, GWL_STYLE, WS_DISABLED + GetWindowLong(c.Handle, GWL_STYLE)); } } private void button2_Click(object sender, System.EventArgs e) { SetControlEnabled(this.button1, false); this.button1.ForeColor = Color.White; }
就去試了效果,發現剛好實現了我想要的效果,於是便在項目中涉及到控件的enabled設置的地方全部都改成了這種方法。於是,項目運行,反復測試,那么問題就來了~
在反復SetControlEnabled(this.button1, false);后SetControlEnabled(this.button1, true);沒有用了,不僅如此,窗口事件全部都不響應了。查了一上午的資料,在偶然的情況下,發現別人的評論,說是把+換成|就可以避免。於是測試,發現prefect!
特此記錄下來,方便自己也方便大家。(參考:http://bbs.csdn.net/topics/80106565)