- •21. Графы, основные понятия теории графов, представление графов.
- •22. Алгоритмы обхода графа: обход в глубину.
- •23. Алгоритмы обхода графа: обход в ширину.
- •24. Деревья, бинарные деревья, дерево двоичного поиска.
- •25. Алгоритмы обхода дерева.
- •26. Обработка исключений, оператор try.
- •27. Обработка исключений, операторы checked, unchecked.
- •28. Генерация собственных исключений
- •29. Работа с файловой системой: классы File и FileInfo.
- •30. Работа с файловой системой: классы Directory и DirectoryInfo.
- •31. Механизм сборки мусора, жизненный цикл объекта, поколения объектов.
- •32. Программирование под Windows, событийно-управляемая модель.
- •33. Архитектура приложений Windows Forms
- •34. Стандартные элементы управления: текстовые поля, кнопки, переключатели.
- •35. Стандартные элементы управления: списки, окна диалога.
- •36. Динамическое создание и удаление элементов управления.
- •37. Обработка событий мыши.
- •39. Делегаты. Определение и использование делегатов.
- •40. События. Событийная модель “publisher/subscribers”
- •38. Обработка событий клавиатуры.
35. Стандартные элементы управления: списки, окна диалога.
Выполняя различные операции с документом — открытие, сохранение, печать, предварительный просмотр, — мы сталкиваемся с соответствующими диалоговыми окнами. Разработчикам .NET не приходится заниматься созданием окон стандартных процедур: элементы OpenFileDialog, SaveFile Dialog, ColorDialog, PrintDialog содержат уже готовые операции.
Перед программистом часто встает задача организации списков, предназначенных для выбора строки из некоторого заранее определенного набора строк. Список класса ListBox. В процессе визуального проектирования приложения для создания списка ListBox программист перетаскивает значок этого списка, расположенный на инструментальной панели Toolbox. При этом в приложение будет добавлен следующий программный код:
this.listBox1 = new System.Windows.Forms.ListBox();
Здесь список создается как объект класса System.Windows.Forms.ListBox.
Сразу после создания список пуст. Редактируя свойство Items, можно добавить в список необходимое количество строк.
Список класса ComboBox. Как мы уже говорили, элемент управления ComboBox представляет собой комбинацию однострочного редактора текста и списка. Когда пользователь щелкает кнопку со стрелкой, расположенную в правой части окна элемента управления ComboBox, список раскрывается, и пользователь может выбрать из него нужную строку. Если же такой строки нет, или если пользователь не желает ее искать, строку можно ввести непосредственно с клавиатуры в поле редактирования.
После создания программа добавляет в список новые строки с помощью метода AddRange:
this.comboBox1 = new System.Windows.Forms.ComboBox(); … this.comboBox1.Items.AddRange( new object[] { "Каждый", "Охотник", "Желает", "Знать", "Где", "Сидит", "Фазан" } );
Элемент управления NumericUpDown. Хотя, строго говоря, элемент управления NumericUpDown и не является списком в обычном понимании этого слова, он позволяет изменять цифровые значения, «прокручивая» их в окне при помощи кнопок со стрелками.
Вот как программа создает элемент управления NumericUpDown:
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
36. Динамическое создание и удаление элементов управления.
Для добавления элементов управления во время работы приложения используется объект ControlsCollection, содержащий ряд методов. Под коллекцией элементов понимается их упорядоченная последовательность. Рассмотрим пример: при нажатии на кнопку будем создавать на форме еще одну кнопку, при нажатии на созданную будем создавать еще одну кнопку и т.д. При щелчке правой кнопкой мыши по любой из кнопок, она будет удаляться.
private void button1_Click(object sender, System.EventArgs e)
{
//Создаем экземпляр btn класса Button
Button btn = new Button();
//Определяем количество элементов управления и находим последний
//добавленный на форму control
Control prev = (Control)this.Controls[this.Controls.Count-1];
//Устанавливаем позицию добавляемых кнопок
int x1 = prev.Location.X;
int y1 = prev.Location.Y;
int height = prev.Height;
int width = prev.Width;
btn.Location = new Point(x1+ width+5, y1 + height +5);
btn.Width = prev.Width;
btn.Height = prev.Height;
//Добавляем событие для новой кнопки и обработчик button1_Click
btn.Click+= new EventHandler(button1_Click);
//Устанавливаем свойство Text кнопки
btn.Text = "Clone";
//Добавляем экземпляр в коллекцию
this.Controls.Add(btn);
//Определяем обработчик для события MouseUp экземпляра кнопки btn
btn.MouseUp+= new MouseEventHandler(button1_MouseUp);
}
Переключаемся в режим дизайна формы, выделяем кнопку, в окне Properties нажимаем на кнопку событий (Events) и дважды щелкаем в поле события MouseUp:
private void button1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Right)
{
//Удаляем данную кнопку
this.Controls.Remove((Control)sender);
}
}