首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让generic<>使用这个方法--> OpenForm()我不想为每个表单创建方法

如何让generic<>使用这个方法--> OpenForm()我不想为每个表单创建方法
EN

Stack Overflow用户
提问于 2019-11-15 03:09:00
回答 2查看 55关注 0票数 0
代码语言:javascript
复制
UIDirector directorUI = new UIDirector();
UIActor actorUI = new UIActor();
private void directorToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenForm(directorUI);
}
private void actorToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenForm(actorUI);
}

void OpenForm(Form frm)
{
    if (frm.IsDisposed)
    {
        frm = new UIDirector();
    }
    frm.Show();
    frm.MdiParent = this;
}
EN

回答 2

Stack Overflow用户

发布于 2019-11-17 19:22:21

我刚刚意识到你在问什么,并决定创建一个新的答案。

为它创建一个扩展方法。

代码语言:javascript
复制
public static class UIExtensions
{
  public static void Present(this Form form, Form parent)
  {
    form.MdiParent = parent;
    form.Show();
  }
}

然后你就可以用actorUI.Present(this);

票数 0
EN

Stack Overflow用户

发布于 2019-11-15 03:50:06

您可以使用new通用约束来创建具有无参数构造函数的特定对象。

代码语言:javascript
复制
UIDirector directorUI = new UIDirector();
UIActor actorUI = new UIActor();
private void directorToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenForm(directorUI);
}
private void actorToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenForm(actorUI);
}

void OpenForm<T>(T frm) where T: Form, new()
{
    if (frm.IsDisposed)
    {
        frm = new T();
    }
    frm.Show();
    frm.MdiParent = this;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58864137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档