Button btnOK = new Button()
{
// ...
DialogResult = DialogResult.OK,
// ...
};
Dar putem in loc ca în handler-ul evenimentului Click al butonului respectiv sa setam proprietatea „DialogResult” a Form-ului pe care trebuie sa il inchida la, de exemplu, DialogResult.OK si atunci Form-ul nostru se inchide automat si metoda ShowDialog a Form-ului returneaza DialogResult.OK.
DialogResult este o enumerare care are elemente precum: Cancel, Yes, No, OK și None.
Capturi de ecran
Form1
Design
Cod din spate
Form2
Design
Cod din spate
Programul rulând
Fereastra principală a programului:Apăsând pe butonul Form2.ShowDialog() se deschide acest formular:
Fereastra se poate închide fie prin butonul OK, când după închidere apare această fereastră:
Fie prin butonul Anulare, butonul X din bara de titlu sau combinația de taste Alt + F4, când după închidere apare această fereastră:
Dacă programul se închide forțat (din Managerul de activități - Task Manager, de exemplu) ferestrele din ultimele 2 capturi de ecran de mai sus nu se deschid.
Codul sursă
Form1.cs
using System;using System.Windows.Forms;
namespace cs_form_dialogresult
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
DialogResult dr = frm2.ShowDialog(this);
if (dr == DialogResult.OK)
{
MessageBox.Show(this,
"Butonul OK a fost apasat.");
}
else if (dr == DialogResult.Cancel)
{
MessageBox.Show(this,
"Butonul X sau Anuleaza a fost apasat.");
}
else
{
// Caz neasteptat, practic imposibil in
// implementarea noastra.
throw new NotImplementedException();
}
frm2.Dispose();
}
}
}
Form2.cs
using System;using System.Windows.Forms;
namespace cs_form_dialogresult
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
}
private void btnAnuleaza_Click(object sender, EventArgs e)
{
// Functioneaza la fel ca la inchiderea
// prin clic pe butonul X din bara de titlu:
DialogResult = DialogResult.Cancel;
}
}
}
Niciun comentariu:
Trimiteți un comentariu