C# 当我选择“否”时窗体仍在关闭

C# 当我选择“否”时窗体仍在关闭,c#,winforms,C#,Winforms,我有以下代码 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (cmd.cetakTanya("Are you sure you want to exit ?")) { cmd.cetakSukses("Thank you for using " + cmd.title); startURL(); } } public bool ceta

我有以下代码

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (cmd.cetakTanya("Are you sure you want to exit ?"))
    {
        cmd.cetakSukses("Thank you for using " + cmd.title);
        startURL();
    }
}

public bool cetakTanya(string message)
{
    bool status = false;

    DialogResult dialogResult = MessageBox.Show(message, title, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
    if (dialogResult == DialogResult.Yes)
    {
        status = true;
    }
    else if (dialogResult == DialogResult.No)
    {
        status = false;
    }
    return status;
}

为什么即使我在确认对话框中选择“否”,我的表单仍然关闭?

您需要取消该事件:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (cmd.cetakTanya("Are you sure you want to exit ?"))
    {
        cmd.cetakSukses("Thank you for using " + cmd.title);
        startURL();
    }
    else
    {
        e.Cancel = true;
    }
}

您需要取消该活动:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (cmd.cetakTanya("Are you sure you want to exit ?"))
    {
        cmd.cetakSukses("Thank you for using " + cmd.title);
        startURL();
    }
    else
    {
        e.Cancel = true;
    }
}
如果单击“否”,请使用该属性取消事件

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (cmd.cetakTanya("Are you sure you want to exit ?"))
    {
        cmd.cetakSukses("Thank you for using " + cmd.title);
        startURL();
    }
    else
        e.Cancel = true;
}
此外,您的方法可以进行重构,使其更加紧凑:

public bool cetakTanya(string message)
{
    var result = MessageBox.Show(message, title, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
    return result == DialogResult.Yes;
}
如果单击“否”,请使用该属性取消事件

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (cmd.cetakTanya("Are you sure you want to exit ?"))
    {
        cmd.cetakSukses("Thank you for using " + cmd.title);
        startURL();
    }
    else
        e.Cancel = true;
}
此外,您的方法可以进行重构,使其更加紧凑:

public bool cetakTanya(string message)
{
    var result = MessageBox.Show(message, title, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
    return result == DialogResult.Yes;
}

为了防止它关闭,您需要使用FormClosingEventArgs。您可以将FormClosingEventArgs传递给cetakTanya方法,并在dialogResult上执行。否,您可以设置e.Cancel=true以防止表单关闭。要实际防止表单关闭,您需要使用FormClosingEventArgs。您可以将FormClosingEventArgs传递给您的cetakTanya方法并在dialogResult上执行。不,您可以设置e.Cancel=true以防止表单关闭。感谢您的建议,我正在使用
cetakTanya()
确认对话框来确保DML将被执行!显然,我正在用同样的方法对不起作用的结帐单进行确认。我必须使用
cancel
使它工作。谢谢感谢您的建议,我正在使用
cetakTanya()
确认对话框来确保DML将被执行!显然,我正在用同样的方法对不起作用的结帐单进行确认。我必须使用
cancel
使它工作。谢谢