Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 事件的问题_C# - Fatal编程技术网

C# 事件的问题

C# 事件的问题,c#,C#,我正在使用一个带有“确定”和“取消”按钮的表单。当用户单击Cancel按钮时,用户将收到一条消息,确认表单是否应关闭。单击OK=close,但是当单击Cancel时,表单不应该关闭,但这就是现在发生的事情,我已经测试过为表单添加一些事件代码,但仍然关闭。我该怎么做才能让它正常工作 // Button - Cancel private void btnCancel_Click(object sender, EventArgs e) { // Mess

我正在使用一个带有“确定”和“取消”按钮的表单。当用户单击Cancel按钮时,用户将收到一条消息,确认表单是否应关闭。单击OK=close,但是当单击Cancel时,表单不应该关闭,但这就是现在发生的事情,我已经测试过为表单添加一些事件代码,但仍然关闭。我该怎么做才能让它正常工作

        // Button - Cancel
    private void btnCancel_Click(object sender, EventArgs e)
    {
        // Message box to confirm or not
        if (MessageBox.Show("Do you really want to cancel and discard all data?",
"Think twice!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==     
DialogResult.Yes)  
        {
            // Yes
            //this.Close(); // Closes the contact form
            m_closeForm = false;
        }
        else
        {
            m_closeForm = false;
            // No
            // Do nothing, the user can still use the form
        }
    }

    private void ContactForm_Formclosing(object sender, FormClosingEventArgs e)
    {

        if (m_closeForm)

            e.Cancel = false; // Stänger formuläret. Inget skall hända

        else

            e.Cancel = true; // Stänger inte formuläret

    }

您可以通过在表单关闭事件中添加带有对话框结果的messagebox来尝试以下操作。我认为这是更好的方法:

    private void btnCancel_Click(object sender, EventArgs e)
    {
        if (MessageBox.Show("Do you really want to cancel and discard all data?", "Think twice!",
       MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
        {
            this.Close();
        }
        // Form wont close if anything else is clicked
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        // PerformAction()
        this.Close();
    }

我想这就是您要查找的内容。

您可以通过在表单关闭事件中添加带有对话框结果的messagebox来尝试以下操作。我认为这是更好的方法:

    private void btnCancel_Click(object sender, EventArgs e)
    {
        if (MessageBox.Show("Do you really want to cancel and discard all data?", "Think twice!",
       MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
        {
            this.Close();
        }
        // Form wont close if anything else is clicked
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        // PerformAction()
        this.Close();
    }

我想这就是你要找的。

要取消结账,你可以使用
FormClosingEventArgs
属性,即
e.Cancel
To
true

在表单的
FormClosing
事件中使用此代码

if (MessageBox.Show("Do you really want to cancel and discard all data?",
"Think twice!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==     
DialogResult.Yes)
{
    e.Cancel = false;
}
else
{
    e.Cancel = true;
}

要取消关闭,您可以使用
FormClosingEventArgs
属性,即
e.Cancel
true

在表单的
FormClosing
事件中使用此代码

if (MessageBox.Show("Do you really want to cancel and discard all data?",
"Think twice!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==     
DialogResult.Yes)
{
    e.Cancel = false;
}
else
{
    e.Cancel = true;
}

我想您会发现在表单的Designer.cs文件中有以下行:

this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;

删除这一行,无论客户MessageBox的结果如何,您的表单将不再自动关闭。

我想您会在表单的Designer.cs文件中找到以下行:

this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;

删除这一行,无论客户MessageBox的结果如何,您的表单将不再自动关闭。

这永远不是一个好的描述。请阅读并编辑您的问题。带有“取消”选项的消息框应位于表单关闭事件中。请将DialogResult属性设置回“无”。“它不工作”永远不是一个好的描述。请阅读并编辑您的问题。带有“取消”选项的消息框应位于表单关闭事件中。请将DialogResult属性设置回“无”。嗯,但这不是表单上的“取消”按钮,而是用户单击表单上的“取消”按钮时出现的消息框中的“取消”按钮。如果用户单击messagebox中的cancel按钮,我希望表单保持可见。你的代码中的messagebox是如何可见的?好吧,现在我真的很困惑。是否希望用户单击表单某处的“取消”按钮时出现消息框?或者,当您关闭表单时,是否要处理单击“消息框中的取消按钮”的对话框结果?我有一个带有“确定”和“取消”按钮的表单。当用户单击“确定”按钮时,将执行som操作并关闭表单。但是,如果用户单击“取消”按钮,则会显示一个消息框,询问用户是否确实要关闭表单,如果用户单击“确定”,则表单应关闭,如果用户单击“取消”,则表单应保持可见。我希望这是清楚的?您的代码正在工作,但当我单击表单中的OK按钮时,我也会收到该消息框。当在表单中单击OK时,不应该出现meassagebox,因为我希望它现在可以工作,而无需您的上次编辑。谢谢你的帮助!嗯,但这不是表单上的取消按钮,而是当用户点击表单上的取消按钮时出现的消息框中的取消按钮。如果用户单击messagebox中的cancel按钮,我希望表单保持可见。你的代码中的messagebox是如何可见的?好吧,现在我真的很困惑。是否希望用户单击表单某处的“取消”按钮时出现消息框?或者,当您关闭表单时,是否要处理单击“消息框中的取消按钮”的对话框结果?我有一个带有“确定”和“取消”按钮的表单。当用户单击“确定”按钮时,将执行som操作并关闭表单。但是,如果用户单击“取消”按钮,则会显示一个消息框,询问用户是否确实要关闭表单,如果用户单击“确定”,则表单应关闭,如果用户单击“取消”,则表单应保持可见。我希望这是清楚的?您的代码正在工作,但当我单击表单中的OK按钮时,我也会收到该消息框。当在表单中单击OK时,不应该出现meassagebox,因为我希望它现在可以工作,而无需您的上次编辑。谢谢你的帮助!