Я занимаюсь разработкой настольного приложения на C # Winforms.В моем приложении мне нужно назначить индекс каждому элементу управления, чтобы идентифицировать его.
Я объясняю, когда пользователь наводит указатель мыши на элемент управления, он меняет цвет, удаляя указатель или щелкая элемент управления., он возвращается к своему первоначальному цвету и остается «выбранным», но, когда он выбран, элемент управления НЕ должен менять свой цвет при наведении на него указателя.
Что ж, мне нужно знать, какой элемент управления выбран намомент, когда его может выбрать не только пользователь, но и мое приложение может автоматически выбирать элементы управления.
Поэтому мне пришло в голову назначить числовое значение каждому элементу управления, чтобы увидеть, выбран ли он, то есть:
Control controla = new Control();
Panel controlb = new Panel();
if(SelectedOption == controla.GetControlIndex())
{
//controla is the selected option
}
Создание метода расширения (я хотел создать свойство расширения, но насколько это возможно):
public static class Ext
{
private static int _ControlIndex = -1;
public static void SetControlIndex(this Control control, int index) => _ControlIndex = index;
public static int GetControlIndex(this Control control) => _ControlIndex;
}
Я сделал это таким образом, думая, что controla
является объектом, а controlb
- другим, то метод расширения должен быть разным для каждого, но не, если я назначаю ноль в качестве индекса для controla
, и tЕсли назначить индекс один для controlb
, тогда индекс для обоих равен единице.
Я хочу иметь возможность назначать индекс каждому элементу управления, как если бы это был своего рода уникальный идентификатор.
ПРИМЕЧАНИЕ : я уже знаю свойство TabIndex
, методы SetChildIndex()
и GetChildIndex()
, они не работают для того, что я хочу.