请教高手这种显示窗口的函数怎么写?
我想打开一个窗口,如果窗口已经打开,再按按钮则只是将它激活。
我一般是这样写的代码:
Form1 form;
void func()
{
if(form==null || form.IsDisposed)
{
form=new Form1();
form.Show();
}
else
{
form.Activate();
}
}
但如果我有很多个窗体类:Form1, Form2, Form3.....这样显然非常不方便
怎么才能成一个函数。只需要传入窗体类名就能做到呢?
如:ShowForm(欲显示的窗体类)
[解决办法]
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void showForm<T>(params object[] args) where T:Form { Form form = null; IEnumerable<T> forms = Application.OpenForms.OfType<T>(); if (forms.Any()) form = forms.First(); if (form == null) form =(Form) Activator.CreateInstance(typeof(T), args); if (form.WindowState == FormWindowState.Minimized) form.WindowState = FormWindowState.Normal; else form.Show(); } private void button1_Click(object sender, EventArgs e) { this.showForm<Form2>(); } }