Лекція 2. Робота зі стандартніми вікнами

 


MessageBox

Як правило, для виведення повідомлень використовується елемент MessageBox. Однак крім виведення рядка повідомлення даний елемент може встановлювати ряд налаштувань, які визначають його поведінку.

Для виведення повідомлення в класі MessageBox передбачений метод Show, який має різні версії і може приймати ряд параметрів. Розглянемо одну з найбільш використовуваних версій:

public static DialogResult Show(

    string text,

    string caption,

    MessageBoxButtons buttons,

    MessageBoxIcon icon,

    MessageBoxDefaultButton defaultButton,

    MessageBoxOptions options

)

 

Тут застосовуються такі параметри:

text: текст повідомлення

caption: текст заголовка вікна повідомлення

buttons: кнопки, які використовуються в вікні повідомлення. Приймає одне зі значень перерахування MessageBoxButtons:

• Abort Retry Ignore: три кнопки Abort (Скасування), Retry (Повтор), Ignore (Пропустити)

• OK: одна кнопка OK

• OKCancel: дві кнопки OK і Cancel (Скасувати)

• RetryCancel: дві кнопки Retry (Повтор) і Cancel (Скасувати)

• YesNo: дві кнопки Yes і No

• YesNoCancel: три кнопки Yes, No і Cancel (Скасувати)

Таким чином, в залежності від вибору, вікно повідомлення може мати від однієї до трьох кнопок.

icon: значок вікна повідомлення. Може приймати одне з наступних значень перерахування MessageBoxIcon:

• Asterisk, Information: значок, що складається з букви i в нижньому регістрі, поміщеній в кружок

Error, Hand, Stop: значок, що складається з білого знака "X" в колі червоного кольору.

Exclamation, Warning: значок, що складається з знаку оклику в жовтому трикутнику

Question: значок, що складається з знака запитання на повершні кола

None: значок у повідомлення відсутній

default Button: кнопка, на яку за замовчуванням встановлюється фокус. Приймає одне зі значень перерахування MessageBoxDefaultButton:

• Button1: перша кнопка з тих, які задаються перерахуванням MessageBoxButtons

• Button2: друга кнопка

• Button3: третя кнопка

options: параметри вікна повідомлення. Приймає одне зі значень перерахування MessageBoxOptions:

• DefaultDesktopOnly: вікно повідомлення відображається на активному робочому столі.

• Right Align: текст вікна повідомлення вирівнюється по правому краю

• RtlReading: всі елементи вікна розташовуються в зворотному порядку справа наліво

• ServiceNotification: вікно повідомлення відображається на активному робочому столі, навіть якщо в системі не зареєстрований жоден користувач

Нерідко використовується один параметр - текст повідомлення. Але подивимося, як використовувати інші параметри. Нехай у нас є кнопка, в обробнику натискання якої відкривається наступне вікно повідомлення:

private void button1_Click(object sender, EventArgs e)

{

    MessageBox.Show(

        "Выберите один из вариантов",

        "Сообщение",

        MessageBoxButtons.YesNo,

        MessageBoxIcon.Information,

        MessageBoxDefaultButton.Button1,

        MessageBoxOptions.DefaultDesktopOnly);

}

 

Описание: 4_59

Однак нам не просто дається можливість установки кнопок у вікні повідомлення. Метод MessageBox.Show повертає об'єкт DialogResult, за допомогою якого ми можемо дізнатися, яку кнопку в вікні повідомлення натиснув користувач. DialogResult представляє перерахування, в якому визначені наступні значення:

• Abort: натиснута кнопка Abort

• Retry: натиснута кнопка Retry

• Ignore: натиснута кнопка Ignore

• OK: натиснута кнопка OK

• Cancel: натиснута кнопка Cancel

• None: відсутність результату

• Yes: натиснута кнопка Yes і No

• No: натиснута кнопка No

Для того, щоб відслідкувати результат вибору користувача, потрібно змінити обробник натискання кнопки наступним чином:

private void button1_Click(object sender, EventArgs e)

{

    DialogResult result = MessageBox.Show(

        "Окрасить кнопку в красный цвет?",

        "Сообщение",

        MessageBoxButtons.YesNo,

        MessageBoxIcon.Information,

        MessageBoxDefaultButton.Button1,

        MessageBoxOptions.DefaultDesktopOnly);

         

    if (result == DialogResult.Yes)

        button1.BackColor=Color.Red;

     

    this.TopMost = true;

}

 

OpenFileDialog і SaveFileDialog

Вікна відкриття і збереження файлу представлені класами OpenFileDialog і SaveFileDialog. Вони мають багато в чому схожу функціональність, тому розглянемо їх разом.

OpenFileDialog і SaveFileDialog мають ряд загальних властивостей, серед яких можна виділити наступні:

• DefaultExt: встановлює розширення файлу, яке додається за замовчуванням, якщо користувач ввів ім'я файлу без розширення

• AddExtension: при значенні true додає до імені файлу розширення при його відсутності. Розширення береться з властивості DefaultExt або Filter

• CheckFileExists: якщо має значення true, то перевіряє наявність файлу з вказаним ім'ям

• Check Path Exists: якщо має значення true, то перевіряє існування шляху до файлу з вказаним ім'ям

• FileName: повертає повне ім'я файлу, обраного в діалоговому вікні

• Filter: задає фільтр файлів, завдяки чому в діалоговому вікні можна відфільтрувати файли по розширенню. Фільтр задається в наступному форматі "Назва файлів" | *. "Розширення". Наприклад, Текстові файли (*. Txt) | * .txt. Можна задати відразу кілька фільтрів, для цього вони розділяються вертикальною лінією |. Наприклад, Bitmap files (* .bmp) | * .bmp | Image files (* .jpg) | * .jpg

• InitialDirectory: встановлює каталог, який відображається під час першого виклику вікна

• Title: загаловок діалогового вікна

Окремо у класу SaveFileDialog можна ще виділити пару властивостей:

• Create Prompt: при значенні true у разі, якщо зазначений неіснуючий файл, то буде відображатися повідомлення про його створення

• OverwritePrompt: при значенні true у разі, якщо зазначений існуючий файл, то буде відображатися повідомлення про те, що файл буде перезаписано

Щоб відобразити діалогове вікно, треба викликати метод ShowDialog ().

Розглянемо обидва діалогових вікна на прикладі. Додамо на форму текстове поле textBox1 і дві кнопки button1 і button2. Також перетягнемо з панелі інструментів компоненти OpenFileDialog і SaveFileDialog. Після додавання вони відобразяться внизу дизайнера форми. В результаті форма буде виглядати приблизно так:

Описание: 4_60

Тепер змінимо код форми:

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        button1.Click += button1_Click;

        button2.Click += button2_Click;

        openFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";

        saveFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";

    }

    // збереження файлу

    void button2_Click(object sender, EventArgs e)

    {

        if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)

            return;

        // отримаємо обраний файл

        string filename = saveFileDialog1.FileName;

        // зберігаємо текст в файл

        System.IO.File.WriteAllText(filename, textBox1.Text);

        MessageBox.Show("Файл збережено");

    }

    // відкриття файлу

    void button1_Click(object sender, EventArgs e)

    {

        if (openFileDialog1.ShowDialog() == DialogResult.Cancel)

            return;

        // отримаємо обраний файл

        string filename = openFileDialog1.FileName;

        // зчитуємо файл в рядкову змінну

        string fileText = System.IO.File.ReadAllText(filename);

        textBox1.Text = fileText;

        MessageBox.Show("Файл відкрито");

    }

}

 

При натисканні на першу кнопку буде відкриватися вікно відкриття файлу. Після вибору файлу він буде зчитуватися, а його текст буде відображатися в текстовому полі. Клік на другу кнопку відобразить вікно для збереження файлу, в якому треба вибрати його назву. І після цього відбудеться збереження тексту з текстового поля в файл.

FontDialog і ColorDialog

FontDialog

Для вибору шрифту і його параметрів використовується FontDialog. Для його використання перенесемо компонент з панелі інструментів на форму. І нехай на формі буде кнопка button1. Тоді в коді форми пропишемо наступне:

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        button1.Click += button1_Click;

        // додаємо можливість вибору кольору шрифта

        fontDialog1.ShowColor = true;

    }

     

    void button1_Click(object sender, EventArgs e)

    {

        if (fontDialog1.ShowDialog() == DialogResult.Cancel)

            return;

        // встановлюємо шрифт

        button1.Font = fontDialog1.Font;

        // встановлюємо колір шрифту

        button1.ForeColor = fontDialog1.Color;

    }

}

 

FontDialog має ряд властивостей, серед яких варто відзначити наступні:

• ShowColor: при значенні true дозволяє вибирати колір шрифту

• Font: вибраний в діалоговому вікні шрифт

• Color: вибраний в діалоговому вікні колір шрифту

Для відображення діалогового вікна використовується метод ShowDialog ().

І якщо ми запустимо програму і натиснемо на кнопку, то нам відобразиться діалогове вікно, де ми можемо поставити всі параметри шрифту. І, після вибору, встановлені настройки будуть застосовані до шрифту кнопки:

Описание: 4_61

ColorDialog

ColorDialog дозволяє вибрати параметри кольору. Також перенесемо його з Панелі інструментів на форму. І змінимо код форми:

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        button1.Click += button1_Click;

        // «розгорнуті» параметри кольору

        colorDialog1.FullOpen = true;

        // установка початкового кольору для colorDialog

        colorDialog1.Color = this.BackColor;

    }

     

    void button1_Click(object sender, EventArgs e)

    {

        if (colorDialog1.ShowDialog() == DialogResult.Cancel)

            return;

        // налаштування кольору форми

        this.BackColor = colorDialog1.Color;

    }

}

 

Серед властивостей ColorDialog слід зазначити наступні:

• FullOpen: при значенні true відображається діалогове вікно з розширеними налаштуваннями для вибору кольору

• SolidColorOnly: при значенні true дозволяє вибирати тільки між кольорами палітри

• Color: вибраний в діалоговому вікні колір

І при натисканні кнопки нам відображається діалогове вікно, в якому можна встановити колір форми:

Описание: 4_62