我总共有6个表格。在我的mainForm中,我有5个按钮来打开面板内的其他表单。我所知道的是这样的:
form1 f1 = new form1();
f1.TopLevel = false;
f1.Dock = DockStyle.Fill;
this.panelMid.Controls.Add(f1);
f1.show();
现在,因为我还有其他5个表单,所以我想创建一个函数,让我打开表单而不必在每个按钮事件中重新键入这些代码。 我的问题是我不知道将表单作为参数传递给函数。
答案 0 :(得分:3)
DRY 101,基于您的代码,其中包含一些泛型
public void MyAwesomeFormShower<TForm>()
where TForm : Form, new()
{
var form = new TForm();
// common code here
form.TopLevel = false;
form.Dock = DockStyle.Fill;
///this.panelMid.Controls.Add(f1); // < who knows what this does, however don't do it
form.Show();
}
用法
MyAwesomeFormShower<MyLovelyHorseForm>();
或者如果你想得到花哨的话
public void MyAwesomeFormShower<TForm>(Action<TForm> action = null)
where TForm : Form, new()
{
var form = new TForm();
// common code here
form.TopLevel = false;
form.Dock = DockStyle.Fill;
action?.Invoke();
form.Show();
}
用法
MyAwesomeFormShower<MyLovelyHorseForm>();
// or
MyAwesomeFormShower<MyLovelyHorseForm>((form) =>
{
// Specialised form stuff here
// that is specific to MyLovelyHorseForm
});