Чтение онлайн

ЖАНРЫ

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

try {

Control testControl = (Control)Activator.CreateInstance(testType);

Полезный совет.

System.Windows.Forms.Form
является производным от
Control
,
так как он использует контейнеризацию свойств
Control
для вывода элементов управления, нарисованных в форме. Если проверить свойство
TopLevelControl
, оно всегда будет задано при выводе класса из формы.

// нам необходимо убедиться,

// что это не элемент управления "верхнего уровня" ...

if (testControl.TopLevelControl == null) {

// если мы здесь оказались, то это элемент управления ...

AddType(testType);

}

}

Мы можем завершить пример двумя обработчиками исключений:

catch {

// если мы здесь, мы не заботимся об объекте!

}

}

 } catch(Exception ее) {

MessageBox.show("The assembly could not be loaded. " + ее.Message);

 }

}

Прежде

чем это проверить, необходимо поместить в проект другие элементы управления. Создадим первый класс, называемый
DemoTextBox
, и добавим следующее предложение наследования:

public class DemoTextBox : System.Windows.Forms.TextBox

Теперь создадим другой класс, на этот раз с именем

DemoMonthCalendar
, и добавим следующее предложение:

public class DemoMonthCalendar : System.Windows.Forms.MonthCalendar

Выполним проект. Должно получиться подобное изображение.

Заключение

Из этой статьи мы узнали, как динамически создавать элементы управления и добавлять их в форму. Мы ввели новый класс, производный от

System.Window.Forms.Button
, который позволяет добавлять дополнительною функциональность и свойства кнопке. Мы увидели также, как соединить с новыми элементами управления методы, вызываемые при инициировании событий. Наконец, мы проверили возможность просмотра сборки в поисках классов и использовали изученную технику для создания простой утилиты, которая загружается и выводит эти классы по команде пользователя.

Поделиться с друзьями: