我想使用以下代码隐藏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();
}
有没有办法清除我面板中的内容并在同一面板中显示新表单?
3条答案
按热度按时间6gpjuf901#
您正在创建密码窗体的新示例。您需要获取当前示例,然后将其隐藏。我可以想到两种方法:
1.保留您创建的frmChangePassword对象以显示表单并调用该对象的hide方法。您可能需要更改该对象的作用域。
1.使用Application.OpenForms集合获取密码窗体的打开示例并隐藏它。
我会先下手为强。
krugob8w2#
好吧,问题是你创建了一个 new 表单,然后隐藏了表单上的面板,你可以分辨出来,因为你使用了
new
关键字:因此,代码实际上工作得很好,因为它确实做了它应该做的事情,只是没有产生预期的结果,即隐藏窗体的 * 现有示例 * 上的面板。
这就有点麻烦了,因为你必须找到一种方法来获得对窗体的现有示例的引用。为了告诉你如何重新设计你的代码来做到这一点,我必须看到更多的代码。通常,你编写代码的方法(需要隐藏的那个)将接受
Form
(甚至frmChangePassword
)类型的参数,调用者将传入要修改的表单的当前示例。flseospp3#
如果你仍然需要它,你必须在你的公共类中声明一个Form类型的全局变量:
每次触发新的表单加载时,请确保将以下内容放在首位:从隐藏();然后使用新的形式初始化变量,该形式将显示:
我放在“{”中的属性可能会根据你想要的样式而改变,但是如果你想让它成为一个无边框的窗口,你可以复制这些属性。