public enum MyControlsStyle
{
   Free={Color.Red,Color.Blue},
   Busy={Color.Black,Color.Red}
}public class MyControls :System.Windows.Form.UserControl
{
   MyControlsStyle style;
   protected Label lb1;
   public MyControlsStyle StyleTest
   {
       set
       {
           lb1.Backcolor=//对应MyControlsStyle的第一种颜色
           lb1.Forecolor=//对应MyControlsStyle的第二种颜色
       }
   }
   
}想实现上述功能,
还是说需要自定义一个派生的Label(多一个MyControlsStyle属性,该派生的Label根据MyControlsStyle来绘制),然后需要增加一个枚举类型的时候
需要重新编译MyControlsStyle和继承的Label是否能实现增加枚举类型的时候只要编译MyControlsStyle就可以的?

解决方案 »

  1.   

    简单的说不能
    因为枚举只能以除char型的整型为基类。但是另一方面,要实现你所想要的也是可以的
    不过只能采取变通的方法
      

  2.   

    定义成类么 public class MyControlsStyle
    {
    public Color BackColor;
    public Color ForeColor;
    }
      

  3.   

    然后把你所有的Style放到一个集合中
      

  4.   

    那样我不能定义几个样式状态 每次都要new一下 扩展新的样式比较麻烦这样我觉得还是说需要自定义一个派生的Label(多一个MyControlsStyle属性,该派生的Label根据MyControlsStyle来绘制),然后需要增加一个枚举类型的时候
    需要重新编译MyControlsStyle和继承的Label这样比较好