我正在尝试关闭一个表单并打开另一个表单而没有任何可见的更改(新表单应该在同一个地方打开,用户不应该看到有两个表单)。这就是我想象的那样。 首先,在按钮上单击我正在创建下一个表单,并在其构造函数中我发送当前的“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,因为它正由另一个进程使用。
答案 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。