如何使用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#中有任何解决方案。。。。。。。。。。。。

如何使用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;
        }
}

在您的情况下,请考虑LoginFormMainForm。登录后,您会尝试隐藏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;
        }
    }