Пользовательский интерфейс .Net

У меня есть очень простое приложение с кнопками на панели инструментов. Когда кнопка нажата, она добавляет соответствующий пользовательский элемент управления в мой файл List<Control>. Затем я перебираю этот список, создавая формы TabPages или mdi с пользовательскими элементами управления в качестве дочерних элементов. Я создал интерфейс для этих пользовательских элементов управления, чтобы убедиться, что они содержат определенные переменные... в частности, одну для текста родительской формы TabPage или mdi.

Когда я передаю свои пользовательские элементы управления функциям (с подписью Control), я не могу ссылаться на переменные, определенные в интерфейсе. Мне интересно, какой лучший способ сделать это. Должен ли я создать новый класс, который наследует «Control» и реализует мой интерфейс, а затем изменить мои пользовательские элементы управления, чтобы они были экземпляром этого нового типа?

я использую С#


person Chris Klepeis    schedule 23.09.2009    source источник
comment
Я бы определенно выбрал класс, который наследует управление + раствор вашего интерфейса, это решит вашу проблему.   -  person ParmesanCodice    schedule 23.09.2009


Ответы (1)


Вам нужно будет привести параметр Control к вашему методу в соответствующий UserControl и убедиться, что это правильный тип. После этого вы сможете получить доступ к своему API:

public void ProcessMyUserControl(Control control) {
    MyUserControl myControl = control as MyUserControl;
    if (myControl == null) 
    {
         // This was a different type of control, not your user control...
         return;
    }
    myControl.MyMethod();
}

Возможно, было бы проще сохранить ваш список напрямую как List<MyUserControl> вместо List<Control>. Затем просто передайте методы вашего класса/интерфейса напрямую.

person Reed Copsey    schedule 23.09.2009