, который представляет экземпляр элемента управления
System.Windows.Forms.DataGrid
. Это позволит протестировать логику того, что делается, не вдаваясь в дополнительные трудности, связанные с загрузкой сборки и просмотром типов данных.
Метод
Form1.AddType
будет получать объект
System.Type
и добавлять новый объект
TypeButton
в форму. Во-первых, необходимо создать экземпляр
TypeButton
и задать его свойство
ControlType
новым типом:
// AddType - добавить кнопку типа в компоновку ...
public void AddType(Type ControlType) {
// первое: создать новую кнопку типа ...
TypeButton button = new TypeButton;
button.ControlType = ControlType;
Во-вторых, нужно добавить
TypeButton
в
ArrayList
, который содержит список кнопок:
// второе: добавить эту кнопку в массив
_buttons.Add(button);
После этого можно поместить в форму кнопку и добавить ее в список элементов управления формы:
// теперь разместим кнопку
button.Left = ButtonSpacing;
button.Width = ButtonWidth;
button.Top = _nextY;
button.Height = ButtonHeight;
// настроить следующее значение у ...
_nextY += (ButtonHeight + ButtonSpacing);
// вывести кнопку ...
this.Controls.Add(button);
Наконец, необходимо присоединить событие
click
(нажатие) кнопки таким образом, чтобы мы могли иметь экземпляр элемента управления, который он представляет:
// затем присоединяем обработчик события ...
button.Click += new EventHandler(this.ButtonClick);
}
Пока еще мы не создали
ButtonClick
, — сделаем это сейчас:
// ButtonClick — вызывается всякий раз при нажатии кнопки ...
Завершая этот пример, покажем, как можно загрузить сборку во время выполнения, просмотреть сборку в поисках типов данных, которые являются произвольными из
System.Windows.Forms.Control
, и добавить кнопки для каждого найденного типа данных.
Чтобы загрузить сборку нам понадобится URL. Добавим следующий код в
Эта строка является обходной техникой для получения сборки, реализующей класс объекта, из которого вызывается код. В данном случае ее получают из URL сборки, содержащей
Form1
.
Нам нужно при загрузке сборки использовать
try…catch
, так как существуют процессы, которые могут пойти в этой процедуре неправильно. Мы используем общий метод на