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

如何从c#.net中从主窗口创建的第二个对象调用主窗口对象,c#,winforms,C#,Winforms,作为Windows窗体开发的第一个用户,我想问一个简单的问题 我在解决方案中创建了一个表单(MainWindow.cs),该表单在运行该解决方案时打开 后来,我创建了第二个窗体(SecondWindow.cs)并创建了一个事件,这样就可以通过单击按钮从第一个窗口调用它。当第二个窗口出现时,第一个窗口(MainWindow.cs)将被禁用 现在我想在第二个窗口关闭时启用MainWindow.cs 如何做到这一点 我已经有了一个简单的解决方案,就是在关闭第二个窗口时隐藏MainWindow.cs和后

作为Windows窗体开发的第一个用户,我想问一个简单的问题

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

后来,我创建了第二个窗体(SecondWindow.cs)并创建了一个事件,这样就可以通过单击按钮从第一个窗口调用它。当第二个窗口出现时,第一个窗口(MainWindow.cs)将被禁用

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

如何做到这一点

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

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

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

使用
price.ShowDialog()
将第二个表单显示为模式对话框。主窗体将被禁用,直到您关闭第二个窗体:

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

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

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;
}

谢谢它正在工作。。。但是我的问题还没有解决。我可以从第二个窗体调用主窗口的对象吗。由.net自动创建的主窗口对象的名称是什么framework@ShyamaprasadPatra默认情况下,没有为主申请表创建直接变量。如果您查看
Program.cs
,您将看到
Application.Run(new MainWindow())。您可以在此处存储对主窗口的引用。您还可以从应用程序打开的表单集合
var form=application.OpenForms[0]获取MainWindow实例。但通常情况下,您会做相反的事情——在第二个表单上创建事件,并在主表单中订阅该事件。当第二个表单发生问题时,将调用主表单上的事件处理程序。
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;
}