功能:当程序窗体上的某控件获得焦点时将其前景色和背景色改变(对比度高的),失去焦点的控件将其前景色和背景色恢复为默认值.
条件:窗体上存在各种不用类型的控件,但要求改变颜色的控件仅限于可以输入字符值的控件(比如:textBox,dataGridView等),其它类控件不响应(比如:button,checkBox等).窗体本身颜色有可能不是默认值.如何实现:
1.在什么事件中写代码?
2.如何取某控件的默认颜色?要求:不要使用公共变量保存默认值,在尽量少的事件中写代码.

解决方案 »

  1.   

    在Enter/Leave事件中控制。可用PropertyDescriptor恢复缺省值。
      

  2.   

    控件默认的颜色应访介SystemColors.Control
      

  3.   

    Form的Enter/Leave事件中控制,还是控件的Enter/Leave事件中控制?
      

  4.   

    按照你的要求当然应该是控件的Enter/Leave
      

  5.   

    没有找到好办法,只能写一个SetColor()方法,在每个控件的Enter事件中调用一下(用ActiveControl).
    再在Leave事件中改回颜色(Forecolor=Color.black;Backcolor=Color.white).
      

  6.   

    1,自己写控件
    2,再窗口加载的时候替换控件的Enter/Leave事件.
    2种方法