我想使用以下代码隐藏panel1(表单内容)中的表单:
frmChangePassword frmChangePassword = new frmChangePassword();
frmChangePassword.Hide();
没有运气。这是我在代码中显示的代码:
//SHOW CHANGEPASSWORD FORM
if (isChangePasswordActive == false)
{
isChangePasswordActive = true;
frmChangePassword frmChangePassword = new frmChangePassword();
frmChangePassword.TopLevel = false;
frmChangePassword.Parent = this.panel1;
frmChangePassword.Show();
}
有没有办法清除面板中的内容并在同一面板中显示新表单? 非常感谢提前。
答案 0 :(得分:1)
您正在创建密码表单的新实例。您需要获取当前实例,然后将其隐藏。我有两种方式可以想到:
保留您创建的frmChangePassword对象,以在该对象上显示表单并调用hide方法。您可能需要更改该对象的范围。
使用Application.OpenForms集合获取已打开的密码表单实例并将其隐藏。
我会采用第一种方法。
答案 1 :(得分:0)
嗯,问题是你正在创建一个 new 表单,然后将该面板隐藏在该表单上。您可以告诉,因为您使用了new
关键字:
frmChangePassword frmChangePassword = new frmChangePassword();
frmChangePassword.Hide(); // affects the ^^ NEW instance ^^ you just created!!
所以代码实际上工作得很好,因为它完全按照它应该做的那样,它只是不会产生你想要的结果,这是隐藏现有实例的面板形式。
这有点过分,因为您必须找到一种方法来获取对表单的现有实例的引用。为了告诉你如何重新设计你的代码,我必须看到更多的代码。通常,您编写此代码的方法(需要执行隐藏的方法)将采用类型为Form
(或甚至frmChangePassword
)的参数,并且调用方将传入当前要修改的表单的实例。