如何使用C#窗口窗体在控制按钮上进行退出确认是或否
本文关键字:退出 确认 按钮 何使用 窗口 窗体 控制 | 更新日期: 2023-09-27 18:27:10
我的窗口应用程序中有一个问题,有两种形式:login和main。
我在两张表格上都创建了退出按钮,还对退出确认进行了编码。
当我们按下表格1上的"退出按钮"信息"否"时,它工作正常。但我们在的表单上登录
另一个表单和第二个表单退出按钮消息按钮按"否",然后返回
表单一,然后单击退出btton否::::它将显示两次确认弹出消息。。。。。。。。。。。。。。。
代码
private void Btn_Exit_Click(object sender, EventArgs e)
{
DialogResult dr = MessageBox.Show("Do you want to exit.", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
Application.ExitThread();
} else
{ }
}
Plz c#中有任何解决方案。。。。。。。。。。。。
只需编写代码即可。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Do you want to close this application?", "Exit", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
{
e.Cancel = true;
}
}
在您的情况下,请考虑LoginForm
和MainForm
。登录后,您会尝试隐藏LoginForm
并显示MainForm
。问题是,当您尝试关闭MainForm
时,它会调用相应的FormCloseEvent
,一旦您选择关闭,它会自动调用隐藏在后台的父窗体,因此它会调用LoginForm's
FormCloseEvent
。这就是两次弹出的原因。
要解决此问题,您需要触发一个事件,即每当关闭子窗体时,您都需要引发一个标志,因此在您父母的FormCloseEvent
中,您需要检查标志,如果标志为true,则无需显示弹出窗口。
private bool isMainFormClosed = false;
private void showMainForm()
{
// Hide the loginform UI.
this.Hide();
var mainForm = new MainForm();
// Creating close event for mainform, whenever close icon is clicked it will close the login form which is hiding in background.
mainForm.FormClosed += new FormClosedEventHandler(mainFormClosed);
// Show the mainform UI
mainForm.Show();
}
private void mainFormClosed(object sender, FormClosedEventArgs e)
{
this.isMainFormClosed = true;
this.Close();
}
private void loginFormClosing(object sender, FormClosingEventArgs e)
{
if(!this.isMainFormClosed)
{
DialogResult dialogResult = MessageBox.Show("Do you want to close the application",AppConstants.APPLICATION_NAME,
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(dialogResult == DialogResult.No)
e.Cancel = true;
}
}
DialogResult
在解雇后由dialogs
返回
它指示用户在对话框上单击了哪个按钮。
代码
private void btnExit_Click(object sender, EventArgs e)
{
const string message = "Do you want to exit?";
const string caption = "EXIT";
var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
Application.Exit();
}
else if (result == DialogResult.Yes)
{
this.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Do you want to close this application?", "Exit", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
{
e.Cancel = true;
}
}