C# 在C中控制另一个已打开的窗体#

C# 在C中控制另一个已打开的窗体#,c#,compact-framework,windows-ce,C#,Compact Framework,Windows Ce,我在WindowsCE5.0中使用CompactFramework2.0作为应用程序 我在不同窗体之间切换控件时遇到问题 为了说明这一点,我创建了一个简单的示例 假设您有两个表单,第一个表单有一个按钮用于加载第二个表单 当您单击按钮并加载第二个表单时,您可能希望拥有一个控件以返回第一个表单,或者您可能只是希望在加载第二个表单后关闭第一个表单 下面是一个关于在加载第二个表单后关闭第一个表单的示例: public partial class Form1 : Form { private vo

我在WindowsCE5.0中使用CompactFramework2.0作为应用程序

我在不同窗体之间切换控件时遇到问题

为了说明这一点,我创建了一个简单的示例

假设您有两个表单,第一个表单有一个按钮用于加载第二个表单

当您单击按钮并加载第二个表单时,您可能希望拥有一个控件以返回第一个表单,或者您可能只是希望在加载第二个表单后关闭第一个表单

下面是一个关于在加载第二个表单后关闭第一个表单的示例:

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
        Form2 secondForm = new Form2();
        secondForm.Show();            
    }
}
但不幸的是,这关闭了两个表单,而不仅仅是当前表单(表单1)

所以我认为这必须在第二个表单代码中进行,但我不知道如何从中访问第一个表单


有什么建议吗?

两个表单都关闭的原因是因为Form2的父级是Form1。WinForms的工作方式是,如果父级关闭(
this.Close()
),则所有子级都将自动关闭

执行此操作的典型方法实际上是使用secondForm.ShowDialog()。这会将第一个表单保留在背景中,但使其不可选择。如果确实要删除当前表单,请将其隐藏:

this.Hide();
Form2 secondForm = new Form2();
secondForm.Show();

然后,您可能需要一个连接到secondForm.Closed事件的方法来调用
this.Show()
,以确保表单重新出现。

两个表单都关闭的原因是因为Form2的父级是Form1。WinForms的工作方式是,如果父级关闭(
this.Close()
),则所有子级都将自动关闭

执行此操作的典型方法实际上是使用secondForm.ShowDialog()。这会将第一个表单保留在背景中,但使其不可选择。如果确实要删除当前表单,请将其隐藏:

this.Hide();
Form2 secondForm = new Form2();
secondForm.Show();

然后,您可能需要一个连接到secondForm.Closed事件的方法来调用
this.Show()
,以确保表单重新出现。

Form1是在Program.cs中创建和启动的主表单。 如果此表单已关闭。整个应用程序结束。
尝试隐藏像之前显示的lan一样的Form1,或使用控制器类通过这两个表单进行协调。

Form1是在Program.cs中创建和启动的主表单。 如果此表单已关闭。整个应用程序结束。
尝试隐藏像之前显示的lan一样的Form1,或者在第一个表单被隐藏,第二个表单被加载后,使用控制器类来协调这两个表单。

。如果将第二种形式的事件连接到closed事件并调用this.Show(),则程序将完全关闭。如果在按钮单击事件中调用this.Show(),则根本不会发生任何事情。我认为这是因为this.Show()引用了第二个表单,而不是第一个(或父)表单。@rfc1484:对不起,我认为这是显而易见的。您不能将form2中的事件连接到它自己的已关闭事件。您在第一个表单中连接事件,响应表单2中的事件。然后这个实例对应于form1。一旦第一个表单被隐藏,第二个表单被加载。如果将第二种形式的事件连接到closed事件并调用this.Show(),则程序将完全关闭。如果在按钮单击事件中调用this.Show(),则根本不会发生任何事情。我认为这是因为this.Show()引用了第二个表单,而不是第一个(或父)表单。@rfc1484:对不起,我认为这是显而易见的。您不能将form2中的事件连接到它自己的已关闭事件。您在第一个表单中连接事件,响应表单2中的事件。那么这个实例对应于form1。