winform在設置控件enabled=false后,無法更改控件字體顏色的問題


項目界面設計的時候,發現在設置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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM