WinForm调用主窗体Close方法失败:从不是创建控件的线程访问它

事情是这样子的:在主窗体点击按钮打开了窗体B,我希望关闭窗体B时关闭整个应用程序,首先想到的一个方案是在窗体B的FormClosed事件中调用主窗体的Close方法,结果不可行。

主窗体程序:
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        (new Form2()).Show(this);
    }
}

窗体B程序:
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        Form1 frm = this.Owner as Form1;
        if (frm != null)
        {
            frm.Close();
        }
    }
}

执行出错,提示:从不是创建控件“button1”的线程访问它:



解决方法

窗体B改用Application.Exit方法关闭应用程序,问题解决:

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.Exit();
}


上一篇: C#比较版本号新旧函数
下一篇: C#判断计算机是否联网
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 3020
发表评论
登录后再发表评论!