Litvek - онлайн библиотека >> Симон Робинсон и др. >> Современные российские издания и др. >> C# для профессионалов. Том II >> страница 202
контейнеризацию свойств 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

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

C# для профессионалов. Том II. Иллюстрация № 195

Заключение

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