我对C#还是陌生的,所以请允许我,我正在尝试向Forms类添加方法,以便在有意义的情况下可以显示和隐藏其他表单中的其他表单。在我的扩展程序中,我有:
namespace ExtensionMethods
{
public static partial class FormExtentsion : Form
{
public static void HideForm(this Form frm)
{
frm.Hide();
}
public static void UnhideForm(this Form frm)
{
frm.Show();
}
}
}
在我的项目中,我有:
private void bnTrBack_Click(objects sender, EventArgs e)
{
Main.UnhideForm();
this.Close();
}
Main是我的主要形式。有没有一种方法可以打开/关闭另一个表单?任何帮助深表感谢!
答案 0 :(得分:1)
正如@CEvenhuis在问题注释中指出的那样,您需要一个主表单的实例。
(而且,您根本不需要扩展方法。从不需要-它们只允许调用代码具有不同的外观。但是,在这种情况下,在您显示的代码中,您只是给宠物起了个名字到已知的现有方法。)
无论如何,在“子”表单中,您可能会有一个字段引用主表单的实例。
Form _parent;
并像使用它
private void bnTrBack_Click(objects sender, EventArgs e)
{
_parent.Show();
Close();
}
或者,假设孩子只是主要形式的孩子,
Main _main;
private void bnTrBack_Click(objects sender, EventArgs e)
{
_main.Show();
Close();
}
问题是如何设置字段。
它可以在构造函数中设置:
ReadOnly Main _main;
并从以下位置更改设计者生成的代码:
public Child()
{
InitializeComponent();
}
到
public Child(Main main)
{
InitializeComponent();
_main = main;
}
退后一步,而不是隐藏主表单,相反,可以- -将子表单显示为modal dialog,并在关闭后收到简单结果:
var result = new Child().ShowDialog();
通常,关于选项,有两点需要评估: