005 – Приклад програмування події в C#

Приклад програмування події натиску на кнопці в C#. Розробка програми визначення площі поверхні кулі


Зміст



Умова задачі

Розробити програму, яка за введеним радіусом R знаходить площу поверхні кулі.

Площа поверхні кулі обчислюється за формулою

02_02_00_005_00_У програмі використати такі компоненти:

  • Label – для виведення повідомлень;
  • Button – кнопка початку розрахунку;
  • TextBox – поле вводу, призначене для введення значення R.

 


Виконання

1. Створення проекту

Завантажити систему візуальної розробки додатків Microsoft Visual Studio. Створити проект за шаблоном Windows Forms Application. Зберегти файли проекту в деякій папці.

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

 

2. Розміщення елементів управління Label, Button і TextBox на формі

З вкладки “Common Controls” виносимо на форму чотири елементи управління (рис. 1):

  • два елементи управління типу Label (мітка);
  • елемент управління типу Button (кнопка);
  • елемент управління типу TextBox (рядок вводу).

C# Windows Forms Application Елементи управління Label Button TextBox

Рис. 1. Елементи управління Label, Button, TextBox

Автоматично створюються чотири об’єкти з іменами label1, label2, button1 і textBox1. За цими іменами пізніше можна буде доступатись до властивостей об’єктів.

Форма додатку матиме приблизно такий вигляд (рис. 2).

C# Windows Forms Application форма рисунокРис. 2. Форма додатку після винесення label1, label2, button1 і textBox1

 

3. Налаштування елементів управління типу Label

Виділяємо елемент управління (об’єкт) label1. В палітрі Toolbox змінюємо властивість Text, набираємо “R = “. Так само змінюємо властивість Text для елемента управління label2 (рис. 3).

C# Windows Forms властивість Text

Рис. 3. Зміна властивості Text в label1

 

4. Елемент управління Button

Аналогічно до label1 виділяємо елемент управління (об’єкт) button1. І у властивості Text вводимо рядок “Обчислити“.

 

5. Проектування форми

Виділяємо форму. Змінюємо назву форми. У властивості Text форми вводимо текст “Площа поверхні кулі“.

Після проектування форма матиме вигляд як зображено на рисунку 4.

C# Windows Forms форма рисунокРис. 4. Вигляд форми після проектування

 

6. Програмування події кліку на кнопці “Обчислити

6.1. Виклик програмного коду

У програмі потрібно обробити подію кліку мишкою (або клавішою “пробіл”) на кнопці “Обчислити“.

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

Щоб викликати фрагмент коду обробки події на кнопці button1 потрібно виконати такі дії:

  • виділити кнопку button1 (рис. 5 – 1);
  • перейти у вкладку Events (події) у вікні властивостей (рис. 5 – 2);
  • зробити подвійний клік “мишкою” напроти події “Click” (рис. 5 – 3).

C# Windows Forms обробка подія ClickРис. 5. Послідовність виклику фрагменту коду обробки події Click

У результаті відкриється вкладка програмного коду, що розміщується у файлі “Form1.cs” (рис. 6).

C# Windows Forms метод обробка подія клік кнопкаРис. 6. Метод обробки події кліку на кнопці button1

Лістинг програмного коду наступний:

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 WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
             InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {

       }
   }
}

 

6.2. Набір програмного коду обробки події

У методі button1_Click вписуємо код обробки події. Лістинг методу має вигляд:

private void button1_Click(object sender, EventArgs e)
{
    const double Pi = 3.1415;
    double R,S;
    R = Double.Parse(textBox1.Text);
    S = 4 * Pi * R * R;
    label2.Text = "Площа поверхні кулі = " + S.ToString();
}

У коді описуються дві змінні R та S типу double. Також описується константа Pi.

Для перетворення з текстового типу string в тип double використовується метод Parse. Таким чином заповнюється значення змінної R.

R = Double.Parse(textBox1.Text.ToString());

Подібним чином можна перетворювати дані й інших типів. Наприклад для типу int можна написати:

int d;
d = Int32.Parse("100"); // d = 100

Результат обчислення площі поверхні кулі виводиться у label2.Text. Перетворення у тип string виконується з допомогою методу ToString().

 

6.3. Корегування програмного коду

У коді, описаному в пункті 6.2 немає захисту від некоректного вводу значення R. Тому метод button1_Click треба переписати наступним чином:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        const double Pi = 3.1415;
        double R, S;
        R = Double.Parse(textBox1.Text);
        S = 4 * Pi * R * R;
        label2.Text = "Площа поверхні кулі = " + S.ToString();
    }
    catch (FormatException ex)
    {
        label2.Text = "Помилка - " + 
ex.Message;
    }
}

Блок

try
{
  ...
}
catch (...)
{
  ...
}

дозволяє здійснити перехоплення програмою критичної ситуації, яка може виникнути у випадку вводу некоректного значення у полі textBox1 (наприклад “3sdd5“).

У цьому випадку у властивості ex.Message буде виведено повідомлення:

Помилка – Input string was not in a correct format

 

7. Запуск програми на виконання

Після цього можна запустити програму на виконання і дослідити її роботу при будь-яких значеннях R.


Зв’язані теми