关闭一个表单并打开另一个表单而没有可见的更改

时间:2016-01-24 13:48:13

标签: c# winforms

我正在尝试关闭一个表单并打开另一个表单而没有任何可见的更改(新表单应该在同一个地方打开,用户不应该看到有两个表单)。这就是我想象的那样。 首先,在按钮上单击我正在创建下一个表单,并在其构造函数中我发送当前的“this”:

private void TryBtn_Click(object sender, EventArgs e)
{
     InfoForm nextForm = new InfoForm(this);
     nextForm.Show();
}

在下一个表单的构造函数中,我将上一个表单的可见性设置为false:

public InfoForm(MainForm prevForm)
{
     prevForm.Visible = false;
}

你能告诉我为什么这不起作用吗?当我第二次尝试启动我的应用程序时,它告诉我该进程无法访问文件xxxx,因为它正由另一个进程使用。

2 个答案:

答案 0 :(得分:1)

使用panel尝试相同的操作。没有两个具有不同控件组的表单,而是在同一表单上有两个面板。或者,如果您希望将代码分开,请创建两个新的用户控件,将两者添加到表单中,然后根据需要隐藏/显示。

答案 1 :(得分:1)

这就是我设法做到的。下一个代码创建下一个表单,即InfoForm,并在其构造函数中发送当前表单的“this”(类型为MainForm):

 private void TryBtn_Click(object sender, EventArgs e)
 {
      InfoForm nextForm = new InfoForm(this);
      nextForm.StartPosition = FormStartPosition.CenterParent;
      nextForm.ShowDialog(this);
 }

这是下一个表单的构造函数的样子:

 public InfoForm(MainForm prevForm)
 {
      prevForm.Visible = false;
 }

您唯一需要注意的是让这两个表单显示在屏幕上的完全相同的位置。您可以通过播放这两个表单的属性来执行此操作(例如,您可以将表单位置放在屏幕的中心)。

编辑:我添加了下一个代码:

 nextForm.StartPosition = FormStartPosition.CenterParent;

这样,nextForm出现在上一个表单的中心,即MainForm。