日期:2014-05-17  浏览次数:20868 次

C#自定义控件事件的问题。。。在线等待指点。。。。!!!!
我自定义了一个控件UserStations,控件的单击事件里面我写了代码是:当单击该控件的时候,有一个选中的效果,主要是颜色变了。

我在主程序界面动态添加了N个UserStations控件,这时问题就来了,当我点击其中一个,单击该控件的事件触发,颜色就变了,然后我点另外一个,颜色也变了,到最后....我主界面上添加的这些控件全颜色变了,我想要的效果是:点击哪个,哪个颜色变,其他的回归到原始色。

但是我不知道如何写了,还是在这个自定义控件的单击事件里面写?肯定不行吧,主界面的话  我又不知道在哪里来控制,怎么控制。谁能提供点思路啊。。。。。
控件 c# winfrom 事件

------解决方案--------------------
巧妙利用类成员解决这个问题

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到原始色。