zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    非常可乐
    Find The Multiple
    盲点集锦
    Fliptile
    Catch That Cow
    Dungeon Master
    hdoj 1045 Fire Net
    hdoj 1342 Lotto【dfs】
    zoj 2100 Seeding
    poj 3620 Avoid The Lakes【简单dfs】
  • 原文地址:https://www.cnblogs.com/wyynts/p/4447011.html
Copyright © 2011-2022 走看看