Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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语言显示多个消息框#_C#_.net_Winforms - Fatal编程技术网

C# 用c语言显示多个消息框#

C# 用c语言显示多个消息框#,c#,.net,winforms,C#,.net,Winforms,我正在制作一个单表单应用程序,并为我的GUI和事件处理程序创建了一个硬编码类 起初,messagebox只显示一次,但当我单击另一个按钮时,它会显示多次,每次单击按钮都会增加 我还没有创建一个未处理的异常,这与此有关吗?如果是未处理的异常,我该如何处理 private void btnInventoryAddFanbelt_click(object sender, EventArgs e) { // CONTENTS // labels

我正在制作一个单表单应用程序,并为我的GUI和事件处理程序创建了一个硬编码类

起初,messagebox只显示一次,但当我单击另一个按钮时,它会显示多次,每次单击按钮都会增加

我还没有创建一个未处理的异常,这与此有关吗?如果是未处理的异常,我该如何处理

private void btnInventoryAddFanbelt_click(object sender, EventArgs e)
    {

        // CONTENTS
        // labels
        lblFanbeltName.Name = "lblFanbeltName";
        lblFanbeltName.Text = "Fanbelt name";
        lblFanbeltName.Visible = true;
        lblFanbeltName.Location = new Point(10, 10);

        // textbox
        txtFanbeltName.Name = "txtFanbeltName";
        txtFanbeltName.Visible = true;
        txtFanbeltName.Location = new Point(115, 8);

        // buttons
        btnInventorySaveFanbelt.Name = "btnInventorySaveFanbelt";
        btnInventorySaveFanbelt.Text = "Add fanbelt";
        btnInventorySaveFanbelt.Visible = true;
        btnInventorySaveFanbelt.Location = new Point(125, 50);
        // END OF CONTENTS

        // REMOVE CONTROLS
        split3.Panel2.Controls.Clear();

        // ADD CONTROLS
        split3.Panel2.Controls.Add(lblFanbeltName);
        split3.Panel2.Controls.Add(txtFanbeltName);
        split3.Panel2.Controls.Add(btnInventorySaveFanbelt);

        // EVENTHANDLERS
        btnInventorySaveFanbelt.Click += new EventHandler(btnInventorySaveFanbelt_click);

    }

private void btnInventorySaveFanbelt_click(object sender, EventArgs e)
    {

        MessageBox.Show("Fanbelt added");

    }

每次单击BTNinEventoryAddFanBelt时,都会添加另一个单击事件:

btnInventorySaveFanbelt.Click += new EventHandler(btnInventorySaveFanbelt_click);
只添加一次,通常最好在构造函数中或通过设计器添加。它也可以缩短为:

btnInventorySaveFanbelt.Click += btnInventorySaveFanbelt_click;
另外,
split3.Panel2.Controls.Clear()不处理控件,它只是删除它们,所以您在这里泄漏内存。尝试使用:

while (split3.Panel2.Controls.Count > 0) {
  split3.Panel2.Controls[0].Dispose();
}

如果您需要帮助,我们需要查看一些代码需要更多信息,老兄,请提供您的按钮单击处理代码异常将使您的程序崩溃。您很可能是在显示对话框时使用了
Show
,而不是
ShowDialog
。否则,您将无法在不关闭框的情况下单击框外的任何内容first@CallumBradbury汪汪您可能多次分配该事件。