2011-05-31 192 views
1

我只是在C#中学习自定义控件(窗体)我已经创建了下面的自定义控件,你可以看到我有一个叫做“Test”的propery,它应该被设置为一个枚举值EnumTest - 它的工作发现,除了我想是控制的用户选择多于一个属性,因此“测试”属性可以是:控制自定义属性

Test = EnumTest.TopLeft | EnumTest.TopRight; 

这是可能的 - 如果是这样,如何为属性中的下拉框只允许我在列表中选择一个枚举。此外,如果可能的话,我需要检测,如果用户将其设置为“无”,那么这将是一个单一的选择,而不是多选。

namespace WindowsFormsApplication1 
{ 
    public partial class myControl1 : Control 
    { 
     public enum EnumTest 
     { 
      None = 0, 
      TopLeft = 1, 
      TopRight = 2, 
      BottomLeft = 4, 
      BottomRight = 8, 
      All = TopLeft | TopRight | BottomLeft | BottomRight 
     } 
     public UserControl1() { 
      InitializeComponent(); 
     } 

     public EnumTest Test { 
      get; 
      set; 
     } 
    } 
} 

非常感谢您的任何帮助。

回答

2

[Flags]添加到您的枚举中,以表明它接受多个值。

我不记得属性网格是否知道[Flags]枚举;如果没有,你需要编写一个UITypeEditor。

+0

我已经添加了[标志]的枚举,但在属性窗口(在设计模式)我只能选择一个选项来设置它 - 我想要的东西像“锚”,除了用于选择锚的图形界面部分。 – harag 2011-05-31 18:02:15

+0

然后你需要一个UITypeEditor。 – SLaks 2011-05-31 18:32:07

+0

我会去寻找一些UITypeEditor教程。感谢您指点我正确的方向。 – harag 2011-05-31 18:51:43

0

没有指定标志枚举的枚举属性吗?稍等片刻,我正在考虑...

嘿,你知道些什么:他们称属性为[Flags]!这应该很容易记住下一次...