Управление пользовательскими свойствами

#c# #winforms #enums #controls

#c# #winforms #перечисления #элементы управления

Вопрос:

Я только изучаю пользовательские элементы управления в C # (оконные формы) Я создал приведенный ниже пользовательский элемент управления, как вы можете видеть, у меня есть свойство под названием «Test», для которого должно быть установлено значение enum из EnumTest — это рабочий поиск, за исключением того, что я хотел бы, чтобы пользователь элемента управления выбирал более одного свойства, чтобы свойство «Test» могло быть:

 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;
        }
    }
}
  

Большое спасибо за любую помощь в этом.

Ответ №1:

Добавьте [Flags] в свое перечисление, чтобы указать, что оно принимает несколько значений.

Я не помню, известно ли сетке свойств о [Flags] перечислениях; если нет, вам нужно будет написать UITypeEditor.

Комментарии:

1. Я добавил [Флаги] в перечисление, но в окне свойств (в режиме разработки) Я могу выбрать только один вариант для его установки — я хотел бы что-то вроде «Привязки», за исключением части графического интерфейса для выбора привязок.

2. Тогда вам нужен UITypeEditor.

3. Я пойду поищу несколько руководств по UITypeEditor. Спасибо, что указали мне правильное направление.

Ответ №2:

Не было ли атрибута enum для указания перечислений флагов? Подождите минутку, я изучаю это…

Эй, что ты знаешь: они вызвали атрибут [Flags] ! Это должно быть легко запомнить в следующий раз…