#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]
! Это должно быть легко запомнить в следующий раз…