Создание пользовательских диалоговых окон
Создание пользовательских диалоговых окон
Теперь, когда вы понимаете роль базовых элементов управления 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; }
}
}