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

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

Рис. 21.33. Встраивание ресурсов изображения

После перекомпиляции вашей библиотеки Windows Controls вы можете снова загрузить предыдущий проект CarControlTestForm. Щелкните правой кнопкой на имеющейся пиктограмме CarControl в окне Toolbox и выберите Delete (Удалить).

Затем снова добавьте элемент CarControl в панель инструментов (с помощью щелчка правой кнопкой мыши с последующим выбором Choose Items). На этот раз вы должны увидеть в окне панели инструментов свой пользовательский точечный рисунок (рис. 21.34).

Рис. 21.34.

Пользовательская пиктограмма на панели инструментов

На этом наше обсуждение вопросов создания пользовательских элементов управления Windows Forms завершается. Я надеюсь, что этот пример вызвал у вас интерес к разработке пользовательских элементов управления. Здесь была использована стандартная для учебников автомобильная тема, но вы можете представить себе пользовательский элемент управления, отображающий круговую диаграмму, построенную на основе содержимого соответствующей таблицы из базы данных, или элементы управления, расширяющие функциональные возможности стандартных элементов пользовательского интерфейса.

Замечание. Чтобы узнать больше о разработке пользовательских элементов управления Windows Forms, обратитесь к книге Matthew MacDonald, User Interfaces In C#: Windows Forms and Custom Controls (Apress, 2002).

Исходный код. Проект CarControlLibrary размещен в подкаталоге, соответствующем главе 21.

Создание пользовательских диалоговых окон

Теперь, когда вы понимаете роль базовых элементов управления Windows Forms и суть процесса построения пользовательских элементов управления, давайте рассмотрим вопрос создания пользовательских диалоговых окон. Здесь хорошей вестью является то, что все уже известное вам о Windows Forms оказывается непосредственно применимым и к случаю программировании диалоговых окон. В общем и целом, создание (и отображение) диалоговых окон ничуть не более сложно, чем добавление в проект новой формы.

В пространстве имен System.Windows.Forms для этого нет специальною базового класса. Диалоговое окно – это просто "специальная" форма. Например, многие диалоговые, окна не позволяют менять свои размеры, поэтому для их свойства FormBorderStyle выбирается значение FormBorderStyle.FixedDialog. Также, в диалоговых окнах свойства MinimizeBox и MaximizeBox обычно равны false (ложь). В этим случае вид диалогового окна вообще является фиксированным, Наконец, если установить значение false для свойства ShowInTaskbar, форме будет запрещено появляться в панели задач Windows XP.

Чтобы продемонстрировать возможности работы с диалоговыми окнами, создайте новое Windows-приложение с именем SimpleModalDialog. Главный тип Form будет поддерживать объект MenuStrip, содержащий пункты меню Файл->Выход и Сервис->Настройка. Постройте этот пользовательский интерфейс и обработайте событие Click для пунктов меню Выход и Настройка. Также определите член-переменную строкового типа (с именем userMessage) в рамках главного типа Form и отобразите соответствующие данные в обработчике события Paint главной формы. Вот как выглядит соответствующий программный код файла MainForm.cs.

public partial class MainWindow: Form {

 private string userMessage = "Сообщение, заданное
по умолчанию";

 public MainWindow {

InitializeComponent;

 }

 private void exitToolStripMenuItem_Click(object sender, EventArgs e) {

Application.Exit;

 }

 private void configureToolStripMenuItem_Click(obiect sender, EventArgs e) {

// Этот метод будет реализован чуть позже…

 }

 private void MainWindow_Paint(object sender, PaintEventArgs e) {

Graphics g = e.Graphics;

g.DrawString(userMessage, new Font("Times New Roman", 24), Brushes.DarkBlue, 50, 50);

 }

}

Теперь добавьте в текущий проект новый объект Form с именем UserMessageDialog.cs с помощью выбора Project->Add Windows Form из меню. Установите для свойств ShowInTaskbar, MinimizeBox и MaximizeBox значения false. Затем постройте пользовательский интерфейс, состоящий из двух типов Button (для кнопок OK и Отмена), одного TextBox (чтобы предоставить пользователю возможность ввести сообщение) и элемента Label с инструкцией. Один возможный вариант показан на рис. 21.35.

Рис. 21.35. Пользовательское диалоговое окно

Наконец, откройте доступ к значению Text элемента TextBox формы с помощью пользовательского свойства с именем Message.

public partial class UserMessageDialog: Form {

 public UserMessageDialog {

InitializeComponent;

 }

 public string Message {

set { txtUserInput.Text = value; }

get { return txtUserInput.Text; }

 }

}

Свойство DialogResult

В качестве заключительного задания при создании пользовательского интерфейса выберите кнопку OK в окне проектирования формы и найдите свойство DialogResult. Назначьте DialogResult.OK кнопке OK и DialogResult.Cancel – кнопке Отмена. Формально говоря, вы можете назначить свойству DialogResult любое значение из перечня DialogResult.

public enum System.Windows.Forms.DialogResult {

 Abort, Cancel, Ignore, No,

 None, OK, Retry, Yes

}

Но что же означает присваивание значения свойству DialogResult элемента Button? Это свойство может быть назначено для любого типа Button (как и для самой формы), и оно позволяет родительской форме определить, какую из кнопок выбрал конечный пользователь. Для примера измените обработчик меню Сервис-> Настройка в рамках типа MainForm так, как предлагается ниже,

private void configureToolStripMenuIteimClick(object sender, EventArgs e) {

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

Кодекс Крови. Книга IV

Борзых М.
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IV

Девятый

Каменистый Артем
1. Девятый
Фантастика:
боевая фантастика
попаданцы
9.15
рейтинг книги
Девятый

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Саженец

Ланцов Михаил Алексеевич
3. Хозяин дубравы
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Саженец

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

(Не)свободные, или Фиктивная жена драконьего военачальника

Найт Алекс
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
(Не)свободные, или Фиктивная жена драконьего военачальника

Вамп

Парсиев Дмитрий
3. История одного эволюционера
Фантастика:
рпг
городское фэнтези
постапокалипсис
5.00
рейтинг книги
Вамп

Инвестиго, из медика в маги 2

Рэд Илья
2. Инвестиго
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Инвестиго, из медика в маги 2

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Неудержимый. Книга XI

Боярский Андрей
11. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XI

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2