如何从c#.net中从主窗口创建的第二个对象调用mainwindow对象

时间:2013-07-21 18:18:28

标签: c# winforms

作为Windows Form Development中的第一个用户,我想问一个简单的问题......

我在解决方案中创建了一个表单(MainWindow.cs),该表单在运行该解决方案时打开。

后期我创建了第二个表单(SecondWindow.cs)并创建了一个事件,以便可以通过单击按钮从第一个窗口调用它。当第二个窗口被填满时,第一个窗口(MainWindow.cs)将被禁用

现在我想在第二个窗口关闭时启用MainWindow.cs。

怎么做......

我已经拥有的一个简单的解决方案是隐藏MainWindow.cs,后者在关闭第二个窗口时创建第一个窗口的新对象并显示它。但是我认为这不是一个好方法,因为已经创建了一个对象由.net框架自动创建第一个窗口,为什么我们应该创建一个Mainwindow.cs的新对象。

第一个窗口代码(MainWindow.cs):

private void priceControllToolStripMenuItem_Click(object sender, EventArgs e)
    {
       SecondWindow price = new SecondWindow();
        this.Enabled = false;
        price.Show();
    }

第二窗口代码(关闭SecondWindow.cs)

private void price_controll_FormClosed(object sender, FormClosedEventArgs e)
    {
        // what will goes here to make the MainWindow.cs to enable state
    }

2 个答案:

答案 0 :(得分:2)

使用price.ShowDialog()将第二种形式显示为模态对话框。在您关闭第二个表单之前,主表单将被禁用:

private void priceControllToolStripMenuItem_Click(object sender, EventArgs e)
{
    using(SecondWindow price = new SecondWindow())
        price.ShowDialog();
}

答案 1 :(得分:0)

您可以将主表单作为所有者传递给第二个表单

private void priceControllToolStripMenuItem_Click(object sender, EventArgs e)
{
    SecondWindow price = new SecondWindow() { Owner = this };
    this.Enabled = false;
    price.Show();
}

然后你可以从第二种形式引用它。

private void price_controll_FormClosed(object sender, FormClosedEventArgs e)
{
    Owner.Enabled = true;
}