我在一个程序中有8个表单(和计数).我有这个重复的代码来实例化或带回每个表单的"可见",并希望有一块模块化的代码,将执行此片段中显示的这些检查:
//Some form classes:
Form f2 = new Form_DisplayCustomersList();
...and other forms too
...
///The code that I would like to modularize, so I don't have to repeat it for every form:
private void button1_Click(object sender, EventArgs e)
{
//check form status and recreate. Show and activate - as needed.
if ((f2 == null) || f2.IsDisposed)
{
f2 = new Form_DisplayCustomersList();
showForm(f2);
} else
{
if (!f2.Visible)
{
showForm(f2);
f2.Activate();
} else
{
f2.Activate();
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我认为ALLOW VARIOUS按钮单击事件调用可重用的方法会很好,如下所示:
public void displayThatView(Form fx)
{
if (fx == null || fx.IsDisposed)
{
// Form fy = new fx();
fx.Show;
}
else
{
if (!fx.Visible)
{
fx.Show;
fx.Activate();
}
else
{
fx.Activate();
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且能够以这种方式调用方法,其中f2可以是任何变量或Form类型:
private void button1_Click(object sender, EventArgs e)
{
this.displayThatView(f2);
}
Run Code Online (Sandbox Code Playgroud)
我只是进入C#几个月.我不确定是否有可能做我正在尝试的事情,但它会消除一些重复的代码!
你可以像这样制作一个静态通用助手方法:
public static class FormHelper
{
public static TForm ShowAndActivate<TForm>(TForm form) where TForm : Form, new()
{
if (form == null || form.IsDisposed)
{
form = new TForm();
form.Show();
}
else
{
if (!form.Visible)
{
form.Show();
form.Activate();
}
else
{
form.Activate();
}
}
return form;
}
}
Run Code Online (Sandbox Code Playgroud)
该where TForm: Form约束保证你的form变量是一个(子)类的Form.该where TForm : new()约束保证有这种类型的表格参数的构造函数.更多信息:http://msdn.microsoft.com/en-us/library/d5x73970.aspx.
通过返回a TForm,您可以通知调用者是否创建了新表单.
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |