首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

这种显示窗口的函数如何写

2012-03-30 
请教高手这种显示窗口的函数怎么写?我想打开一个窗口,如果窗口已经打开,再按按钮则只是将它激活。我一般是

请教高手这种显示窗口的函数怎么写?
我想打开一个窗口,如果窗口已经打开,再按按钮则只是将它激活。
我一般是这样写的代码:
Form1 form;
void func()
{
  if(form==null || form.IsDisposed)
  {
  form=new Form1();
  form.Show();
  }
  else
  {
  form.Activate();
  }
}

但如果我有很多个窗体类:Form1, Form2, Form3.....这样显然非常不方便

怎么才能成一个函数。只需要传入窗体类名就能做到呢?
如:ShowForm(欲显示的窗体类)

[解决办法]

C# code
    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>();        }    } 

热点排行