【问题标题】:Control custom properties控制自定义属性
【发布时间】:2011-09-05 14:24:49
【问题描述】:

我刚刚学习 C# 中的自定义控件(窗口窗体)我创建了以下自定义控件,如您所见,我有一个名为“Test”的属性,它应该设置为 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;
        }
    }
}

非常感谢您对此提供的任何帮助。

【问题讨论】:

    标签: c# winforms enums controls


    【解决方案1】:

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

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

    【讨论】:

    • 我已将 [Flags] 添加到枚举中,但在属性窗口中(在设计模式下)我只能选择一个选项来设置它 - 我想要类似“Anchor”的东西,除了用于选择锚点的图形界面部分。
    • 那么你需要一个 UITypeEditor。
    • 我会去寻找一些 UITypeEditor 教程。感谢您为我指明正确的方向。
    【解决方案2】:

    枚举中没有用于指定标志枚举的属性吗?等一下,我正在调查这个……

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2012-08-29
      • 1970-01-01
      • 2011-05-11
      相关资源
      最近更新 更多