- •Лекція 7. Використання стандартних компонентів в проекті План
- •7.1. Відкриття файлу - OpenFileDialog
- •7.2. Збереження файлу - SaveFileDialog
- •7.3. Вибір шрифту - FontDialog
- •7.4. Вибір кольору – ColorDialog
- •7.5. Друкування файлу – PrintDialog
- •7.6. Обробка подій кнопок панелі інструментів
- •7.7. Завершення роботи програми та інші події
- •7.7.1. Завершення роботи програми
- •7.7.2. Обробка події зміни файлу
- •7.7.3. Закриття вікна у заголовку форми
- •7.8. Виведення повідомлень - MessageBox
7.1. Відкриття файлу - OpenFileDialog
Додамо на форму діалог OpenFileDialog з вікна панелі інструментів ToolBox.
Переходимо в код форми. Підключаємо простір імен для роботи з файловими потоками:
using System.IO;
Реалізуємо код діалогу відкриття файлу у вигляді закритого методу OpenDocument() для того, щоб викликати його з меню і з панелі інструментів, не дублюючи код.
Лістинг 7.2.
//Відкрити документ
private void OpenDocument()
{
openFileDialog1.FileName = string.Empty;
// Відобразити діалог відкриття файлу
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
fn = openFileDialog1.FileName;
// відобразити им'я файла у заголовку вікна
this.Text = fn;
try
{
// читання даних з файлу
System.IO.StreamReader sr =
new System.IO.StreamReader(fn);
textBox1.Text = sr.ReadToEnd();
textBox1.SelectionStart = textBox1.TextLength;
sr.Close();
}
catch (Exception exc)
{
MessageBox.Show("Помилка читання файла.\n" + exc.ToString(), "NkEdit",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
В цьому методі команда
openFileDialog1.ShowDialog
відкриває вікно діалогу для пошуку і відкриття файлів. В змінній FileName повертається назва вибраного файлу. В об'єкті DialogResult. повертається true, якщо користувач натиснув кнопку OK.
Отже, якщо користувач натиснув кнопку OK, змінній fn призначається значення FileName, виконується читання файлу в текстове поле редактора.
При помилці читання файлу генерується переривання (виключення) і керування переходить в блок catch обробки переривання.
Додаємо обробник для команди меню Відкрити:
//Відкрити...
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenDocument();
}
Такий саме обробник додаємо для кнопки панелі інструментів
private void openToolStripButton_Click(object sender, EventArgs e)
{
OpenDocument();
}
7.2. Збереження файлу - SaveFileDialog
Для збереження файлів додаємо на форму елемент управління saveFileDialog1. Властивості цього діалогу такі самі, як в OpenFileDialog. Роботу з цим діалогом реалізуємо в методі SaveDocument.
Лістинг 7.3.
// Зберегти документ - закритий метод
private int SaveDocument()
{
int result = 0;
if (fn == string.Empty)
{
// відобразити діалог Зберегти
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
// відобразити им'я файла у заголовку вікна
fn = saveFileDialog1.FileName;
this.Text = fn;
}
else result = -1;
}
// зберегти файл
if (fn != string.Empty)
{
try
{
// отримуємо інформацию про файл fn
System.IO.FileInfo fi = new System.IO.FileInfo(fn);
// створюємо потік для запису (перезаписуємо файл)
System.IO.StreamWriter sw = fi.CreateText();
// записуємо дані
sw.Write(textBox1.Text);
// закриваємо потік
sw.Close();
result = 0;
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString(), "NkEdit",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
return result;
}
Додаємо обробник для команди меню Зберегти:
//Зберегти...
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveDocument();
}
Такий саме обробник додаємо для кнопки панелі інструментів
//кнопка Зберегти (save) - використовуємо закритий метод SaveDocument();
private void saveToolStripButton_Click(object sender, EventArgs e)
{
SaveDocument();
}
