Reakcja na zawarte przyciski w oknie dialogowym
Cel: Napisz aplikację wykorzystującą okno dialogowe do sterowania warunkiem zakończenia programu
Krok 1. Układ komponentów
Projekt jest bardzo prosty w działaniu i wykonaniu. Będziemy potrzebować dwóch komponentów typu Button. Jeden z nich będzie wywoływać okno dialogowe zamknięcia aplikacji, a drugi będzie zamykać aplikację bezpośrednio po kliknięciu w jego obszarze.
Krok2. Przypisanie funkcji Close() do klawisza
Ustawiamy odpowiednio treść we właściwości Text obu klawiszy. Jednemu z nich przypisujemy w zdarzeniu Click funkcję zamykającą aplikację
private void Button2_Click(object sender, EventArgs e)
{
this.Close();
}
Krok 3. Wywołujemy okno dialogowe z układem klawiszy YesNo
W zdarzeniu kliknięcia klawisza wprowadzamy kod wywołujący okno dialogowe. Dla okna dialogowego ustawiamy parametry treści komunikatu, tytułu okna, układ klawiszy oraz wybieramy jedna z dostępnych ikon. Jedna z możliwych treści polecenia powinna wyglądać jak poniżej
private void Button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Czy zakończyc aplikację?", "Komunikat", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
}
Po skompilowaniu projektu mamy możliwość wywołania okna dialogowego
Krok 4. Przypisujemy reakcję na wciśnięcie klawisza Tak lub Nie dla wywołanego okna dialogowego
Dążymy do tego aby po wybraniu w oknie dialogowym klawisza Tak zamknąć aplikację. Odczyt logicznych wartości wybranych klawiszy okna dialogowego uzyskamy poprze zastosowanie klasy DialogResult oraz wyrażenia warunkowego if. Kod funkcji realizującej działanie na wybraną opcję nie jest skomplikowany.
private void Button1_Click(object sender, EventArgs e)
{
DialogResult wynik = MessageBox.Show("Czy zakończyc aplikację?", "Komunikat", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (wynik == DialogResult.Yes) { this.Close(); }
else
{ this.Text = "Rezygnacja z zamknięcia";}
}
Wybranie klawisza Nie skutkuje zmianą tytułu głównego okna aplikacji
Ćwiczenie sprawdzające
Zmodyfikuj tak aplikację, aby po wyborze klawisza Nie okna dialogowego wywołać nowe okno dialogowe, które zwróci treść komunikatu rezygnacji z zamknięci aplikacji
Pełny kod zbudowanej aplikacji
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace dialog_zamknij
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void Button1_Click(object sender, EventArgs e)
{
DialogResult wynik = MessageBox.Show("Czy zakończyc aplikację?",
"Komunikat",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (wynik == DialogResult.Yes) { this.Close(); }
else
{ this.Text = "Rezygnacja z zamknięcia";
MessageBox.Show("Zrezygnowano z zamknięcia",
"Komunikat",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
}
}