C#自定义控件事件的问题。。。在线等待指点。。。。!!!!
我自定义了一个控件UserStations,控件的单击事件里面我写了代码是:当单击该控件的时候,有一个选中的效果,主要是颜色变了。
我在主程序界面动态添加了N个UserStations控件,这时问题就来了,当我点击其中一个,单击该控件的事件触发,颜色就变了,然后我点另外一个,颜色也变了,到最后....我主界面上添加的这些控件全颜色变了,我想要的效果是:点击哪个,哪个颜色变,其他的回归到原始色。
但是我不知道如何写了,还是在这个自定义控件的单击事件里面写?肯定不行吧,主界面的话 我又不知道在哪里来控制,怎么控制。谁能提供点思路啊。。。。。
------解决方案--------------------巧妙利用类成员解决这个问题
public partial class UserStations : UserControl
{
private static UserStations preCtl = null;
private static Color default_Color = SystemColors.Control;
//constructor
Click Event:
if (preCtl != null) preCtl.BackColor = default_Color;
BackColor = Color.Red;
preCtl = this;
}
------解决方案--------------------UserStations中定义一个static的List<UserStations>.使用单件模式取得它的实例。
UserStations的构造函数中将this 加入到List<UserStations>中。
点击事件触发是改变颜色时,遍历List<UserStations>,如果不是自己Reset color到原始色。