200 likes | 410 Views
Высокоуровневые методы информатики и программирования Лекция 2 5 Работа с диалогами. План работы. Понятие диалога Простой диалог – MessageBox ; Встроенные диалоги; Собственные диалоги. Однодокументные и многодокументные интерфейсы. Программа включает :. основную форму программы
E N D
Высокоуровневые методы информатики и программированияЛекция 25Работа с диалогами
План работы • Понятие диалога • Простой диалог – MessageBox; • Встроенные диалоги; • Собственные диалоги. • Однодокументные и многодокументные интерфейсы.
Программа включает: • основную форму программы • дочерние окна отображения (MDI) • диалоговые окна – объекты класса Form, которые создаются и показываются при выборе пунктов меню (или элемента ToolStrip) • для получения данных от пользователя
Перечисление - DialogResult • Вызов диалога frm.ShowDialog • 2. Диалог возвращает значение перечисления DialogResult: Yes, No, Cancel, Retry, Abort, Ignore, None if(openFileDialog1.ShowDialog() == DialogResult.OK) { if((myStream = openFileDialog1.OpenFile())!= null) { // Insert code to read the stream here. myStream.Close(); } }
Типы диалоговых окон • По способу создания • Библиотечные диалоги • Класс MessageBox • Общие диалоги (Common Dialogs) • Собственные диалоги • По способу работы • модальные – блокируют работу других окон • немодальные – позволяют работать с другими окнами
Показ и закрытие формы Методы показа формы • В немодальном режиме - Show() • В модальном режиме - ShowDialog() Методы закрытие формы • Сохранение в памяти - Hide() • Удаление из памяти - Close()
Простой диалог System.Windows.Forms.MessageBox.Show • Статический класс • Один метод Show – 12 вариантов • Основной метод – Show() • MessageBoxButtons – комбинации кнопок на форме: Ok, OkCancel, RetryCancel, Yes, No, YesNoCancel, AbortRetryIgnore
Пример вызова диалога MessageBox MessageBox.Show("OK to Close", "Game Status", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2 );
Классы встроенных диалоговSystem.Windows.Forms • OpenFileDialog – диалог открытия файла • SaveFileDialog– диалог для сохранения файла • PrintDialog– диалог вывода на печать • PrintPreviewDialog– диалог предварительный просмотр результата печати • ColorDialog – диалог выбора цвета • FontDialog – диалог выбора шрифта • FolderBrowserDialog – диалог работы с каталогами
Свойства встроенного диалогаOpenFileDialog • Title – заголовок диалога • Filter – “описание1| фильтр1| описание2| фильтр2” Например: "txt files (*.txt) | *.txt | All files (*.*) | *.*" • FilterIndex – фильтр по умолчанию • InitialDirectory – начальная папка для ввода • AddExtension – добавлять расширение по умолчанию? • DefaultExtension – расширение по умолчанию • FileName (FileNames) – имя выбранного файла • ValidateNames – проверять автоматически существование файла? • CheckFileExist • CheckPathExist
openFileDialog1.InitialDirectory = “c:\”; openFileDialog1.Filter = “txt files (*.txt) | *.txt | All files (*.*) | *.*”; openFileDialog1.FilterIndex = 2; openFileDialog1.RestoreDirectory = true;
Пример вызова диалога OpenFile string str; ….. if(openFileDialog1.ShowDialog() == DialogResult.OK) { StreamReader myStream; myStream = File.OpenText(openFileDialog1.FileName); if (myStream != null) { // Здесь вставляется код для чтения данных str = myStream.ReadLine(); myStream.Close(); } }
Пример вызова общего диалога private void myClick(object sender, System.EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter ="txt files (*.txt) | *.txt | All files (*.*) | *.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.AddExtension = true; openFileDialog1.Title = "My Open Dialog"; openFileDialog1.ValidateNames = true; DialogResult rc = openFileDialog1.ShowDialog(); if(rc == DialogResult.OK) { string s = openFileDialog1.FileName; } }
Создание собственного диалога • Добавить форму • Разместить элементы управления • Назначить в обработчиках событий кнопок значение свойства DialogResult • По заданному событию в основной форме создать экземпляр диалога • Вызвать на выполнение метод ShowDialog • Проанализировать результат • Сохранить полученные значения
Класс DialogForm public partial class DialogForm : Form { public int x; public int y; public DialogForm() { InitializeComponent(); } private void DialogForm_Load(object sender, EventArgs e) { textBox1.Text = x.ToString(); textBox2.Text = y.ToString(); } } private void button1_Click(object sender, EventArgs e) { x = Convert.ToInt32(textBox1.Text); y = Convert.ToInt32(textBox2.Text); this.DialogResult = DialogResult.OK; } private void button2_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; }
Использование собственного диалога privatevoidmyClick(objectsender, System.EventArgse) { int X = 5, Y = 10; DialogFormdlg = new DialogForm(); dlg.x = X; dlg.y = Y; DialogResultrc = dlg.ShowDialog(); if (rc == DialogResult.OK) { X = dlg.x; Y = dlg.y; MessageBox.Show("X = "+X.ToString()+";Y="+Y.ToString(), "Результат работы диалога”,MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); } }
Сообщение о коде завершения диалога private void buttonOK_Click(object sender, System.EventArgs e) { this.DialogResult = DialogResult.OK; } private void buttonCancel_Click(object sender, System.EventArgs e) { this.DialogResult = DialogResult.Cancel; }
AcceptButton = buttonOK; //Button to receive default focus CancelButton = buttonCancel; //Fires when Esc pushed