加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 动态初始化窗体对象

发布时间:2020-12-16 01:57:26 所属栏目:百科 来源:网络整理
导读:如何动态初始化win表单.在我的应用程序中,我有多种形式,如超过50,以下代码重复多次.. 所以我想为它创建一些功能并完成这项工作.但是如何创建特定Form的new()实例. 任何帮助将不胜感激. private void ShowForm(object frm){ if (frm == null || frm.IsDispose
如何动态初始化win表单.在我的应用程序中,我有多种形式,如超过50,以下代码重复多次..

所以我想为它创建一些功能并完成这项工作.但是如何创建特定Form的new()实例.
任何帮助将不胜感激.

private void ShowForm(object frm)
{
    if (frm == null || frm.IsDisposed)
    {
        frm = new <<Here is some Class Name>> { MdiParent = this };
        frm.Show();
        frm.WindowState = FormWindowState.Maximized;
    }
    else
    {
        frm.Activate();
    }
 }

解决方法

如果您知道要使用的类型,则可以使用Activator.CreateInstance:

private void ShowForm(Form form,Type type)
{
    if (form == null || form.IsDisposed)
    {
        form = (Form) Activator.CreateInstance(type);
        form.MdiParent = this;
        form.Show();
        form.WindowState = FormWindowState.Maximized;
    }
    else
    {
        form.Activate();
    }
}

或者,如果您从不同的地方调用它,并在编译时知道要使用哪种类型:

private void ShowForm<T>(T form) where T : Form,new()
{
    if (form == null || form.IsDisposed)
    {
        form = new T();
        form.MdiParent = this;
        form.Show();
        form.WindowState = FormWindowState.Maximized;
    }
    else
    {
        form.Activate();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读