Створення обробників подій для елементів керування у Windows Forms

Після того як етап візуального проектування завершено необхідно додати певний код для забезпечення функціональності програми. Програма повинна мати обробники подій для кожного елемента керування, а саме кнопок, кожного пункту меню і т. п. Обробник подій – це метод, який виконується при взаємодії користувача з елементом керування. Visual C# автоматично створює порожні обробники подій.

Створення обробника події елемента Button. Розглянемо випадок створення обробника події – натискання кнопки. Для цього необхідно активувати кнопку на формі конструктора подвійним натисканням маніпулятора, після чого відкриється редактор коду. Обробник події Click вже містить код для виведення повідомлення про натискання користувачем кнопки.

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace Web_browser

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void goButton_Click(object sender, EventArgs e)

{

// Місце для коду обробника події натискання кнопки

}

}

}

Оскільки призначення кнопки в даному випадку полягає у команді завантаження відповідного веб-ресурсу з випадаючого вікна елемента ComboBoxнеобхідно додати наступний код в метод обробника події:

 

private void goButton_Click(object sender, System.EventArgs e)

{

webBrowser1.Navigate(new Uri(comboBox1.SelectedItem.ToString()));

}

 

Цей код бере поточний виділений рядок з елемента керування ComboBox (рядок з URL-адресою веб-ресурсу) і передає його в метод веб-оглядача Navigate. Метод Navigate завантажує і відображає вміст зазначеної веб-сторінки. При вставці коду необхідно враховувати назву елемента у властивостях (виділено кольором). В даному випадку у властивостях елемента Ім’я Button1 було змінено на goButton.

Якщо для вводу адресної строки передбачити текстове поле TextBoxзамість елемента керування ComboBoxобробник події необхідно дещо модифікувати.

У наступному прикладі коду демонструється використання властивості Url, що дозволяє реалізувати адресний рядок для елемента керування WebBrowser. Згідно з прикладом призначена для користувача форма містить елементи керування WebBrowser з ім'ям webBrowser1, елемент TextBox з ім'ям TextBoxAddress і елемент Button з ім'ям goButton.

 

// Перейти за URL в адресній строці якщо

// натиснута клавіша ENTER з розташуванням курсору в адресній строці.

private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Enter)

{

Navigate(toolStripTextBox1.Text);

}

}

 

// Перейти за URL в адресній строці якщо

// натиснута кнопка «Перейти».

private void goButton_Click(object sender, EventArgs e)

{

Navigate(toolStripTextBox1.Text);

}

 

// Перейти за URL в адресній строці якщо вона задана.

private void Navigate(String address)

{

if (String.IsNullOrEmpty(address)) return;

if (address.Equals("about:blank")) return;

if (!address.StartsWith("http://") &&

!address.StartsWith("https://"))

{

address = "http://" + address;

}

try

{

webBrowser1.Navigate(new Uri(address));

}

catch (System.UriFormatException)

{

return;

}

}

 

// Оновити URL в адресній строці після переходу на іншу сторінку.

private void webBrowser1_Navigated(object sender,

WebBrowserNavigatedEventArgs e)

{

toolStripTextBox1.Text = webBrowser1.Url.ToString();

}

Коли в текстове поле вводиться URL-адреса та натискається клавіша ENTER або кнопка Перейти, елемент керування WebBrowser переходить за відповідною адресою. Коли відбувається перехід за допомогою активації гіперпосилання, текстове поле автоматично оновлюється для відображення поточної URL-адреси.

Створення обробника події для параметрів MenuStrip.Щобдодати код для пунктів менюMenuStripнеобхідно повернутися у вікно конструктора і по черзі двічі натиснути на кожен підпункт меню. Visual C# автоматично створить для кожного методи обробники подій. Зміна цих методів, за зразком наведеним нижче, надасть підпунктам меню необхідної функціональності.

 

private void домашняСторінкаToolStripMenuItem_Click(object sender, EventArgs e)

{

webBrowser1.GoHome();

}

 

private void назадToolStripMenuItem_Click(object sender, EventArgs e)

{

webBrowser1.GoBack();

}

 

private void впередToolStripMenuItem_Click(object sender, EventArgs e)

{

webBrowser1.GoForward();

}

 

Кожен з цих обробників меню викликає метод навігації, підтримуваний класом WebBrowser(табл. 1).

Створення власного коду ініціалізації форми Windows Forms. На практиці при завершенні створення програми Windows Forms часто необхідно модифікувати або додати власний код ініціалізації.

Середовище Visual C# автоматично створює код ініціалізації при створенні форми. Щоб переглянути автоматично доданий код у представленні Код слід знайти конструктор для класу форми (в даному випадку Form1). Натиснувши правою кнопкою миші на метод InitializeComponent, що викликається з конструктора, і вибравши команду «Перейти до визначення», буде показаний код, створений фоновим процесом при перетягуванні елементів керування і встановленні властивостей у вікні Властивості.

Конструктор ніколи не повинен використовуватися для виклику будь-якого коду, який може призвести до винятків. Такий код повинен розташовуватися в методі Form1_Load.

Щоб створити обробник події початкового завантаження необхідно перейти на вкладку Form1.cs [Конструктор] у верхній частині редактора коду. Далі виділити форму і у вікні Властивості натиснути кнопку Події (із зображенням блискавки), потім двічі натиснути на рядку Завантажити (Load) (рис. 8). Буде створений обробник подій і курсор переміститься у даний метод.

При запуску програми ОС Windows повідомить про це форму шляхом відправки події Load. При отриманні формою цієї події буде викликаний метод Form1_Load .

 

Рис.8. Створення власного коду ініціалізації

 

Додавання двох рядків коду в метод Form1_Load, як показано нижче може бути прикладом обробки події Load:

 

private void Form1_Load(object sender, EventArgs e)

{

comboBox1.SelectedIndex = 0;

webBrowser1.GoHome();

}

В результаті елемент керування WebBrowser відобразить домашню сторінку за замовчуванням і буде присвоєно початкове значення елемента ComboBoxодразу після запуску програми веб-оглядача.