读书人

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

发布时间: 2012-03-30 17:32:10 作者: rapoo

请教高手这种显示窗口的函数怎么写?
我想打开一个窗口,如果窗口已经打开,再按按钮则只是将它激活。
我一般是这样写的代码:
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>();        }    } 

读书人网 >C#

热点推荐