Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

foreach(Type testType in controlAssembly.GetTypes) {

Далее хитрость состоит том, чтобы создать экземпляр проверяемого типа данных, но преобразовать его в

Control
. Так как все это погружено в другой блок
try…catch
, то при переходе к следующей строке мы знаем, что имеется полностью квалифицированный элемент управления.

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

// и преобразовать его в элемент управления ...

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
, который позволяет добавлять дополнительною функциональность и свойства кнопке. Мы увидели также, как соединить с новыми элементами управления методы, вызываемые при инициировании событий. Наконец, мы проверили возможность просмотра сборки в поисках классов и использовали изученную технику для создания простой утилиты, которая загружается и выводит эти классы по команде пользователя.

  • 1
  • ...
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: