Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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中的FormClosing#_C#_Winforms - Fatal编程技术网

C# c中的FormClosing#

C# c中的FormClosing#,c#,winforms,C#,Winforms,你好,先生。我这里的问题是关闭表单函数没有在表单关闭后立即实现。但是,如果我关闭表单并再次打开它,然后再次关闭它,则会执行close_form函数。我怎样才能在编译和运行程序后立即使用close-form方法呢?请帮帮我 private Form2 ins = new Form2(); private void userManageLink_Click(object sender, EventArgs e) { ins.ShowDialog();

你好,先生。我这里的问题是关闭表单函数没有在表单关闭后立即实现。但是,如果我关闭表单并再次打开它,然后再次关闭它,则会执行close_form函数。我怎样才能在编译和运行程序后立即使用close-form方法呢?请帮帮我

private Form2 ins = new Form2();

private void userManageLink_Click(object sender, EventArgs e)
    {


        ins.ShowDialog();

        ins.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Close_Form);

    }

    private void Close_Form(object sender, EventArgs e)
    {

        MessageBox.Show("Hello World");

    }

在调用ShowDialog()之前,将事件处理程序的赋值移动到。调用ShowDialog()后,直到表单关闭后才会返回。到那时,安装事件处理程序已经没有意义了,因为表单已经关闭,事件不会被触发。

问题可能是您在ShowDialog调用之后添加了FormClosing处理程序。将显示该对话框,关闭它,然后添加处理程序。尝试在ShowDialog调用之前添加处理程序。

此外,您可能不想为每次单击分配事件处理程序,您将开始获得名为multiple的委托times@Matt:对于此问题,只需每次创建一个新的表单对象并对其进行处理。这是我通常做的,而不是在长期存在的类中放置未经分解的表单对象。