c# - 如何为 mdi 容器创建函数

标签 c# winforms mdi

如何为我的以下代码创建一个函数,这样我就不必编写以下整个代码来使表单用作 MDICHILD 表单。

Students stu = null;
private void studentsToolStripMenuItem1_Click(object sender, EventArgs e)
{
  if (stu == null || stu.IsDisposed)
  {
    stu = new Students();
    stu.MdiParent = this;
    stu.Show();
  }
  else
  {
    stu.Activate();
  }
}

最佳答案

您的代码没有任何问题。你可以通过一些反射(reflection)让它变干:

    public Form CreateMdiChild(Type type, bool singleton) {
        if (singleton) {
            foreach (var child in this.MdiChildren) {
                if (child.GetType() == type) {
                    child.WindowState = FormWindowState.Normal;
                    child.Show();
                    child.Activate();
                    return child;
                }
            }
        }
        Form form = (Form)Activator.CreateInstance(type);
        form.MdiParent = this;
        form.Show();
        return form;
    }

用法:

 CreateMdiChild(typeof(Students), true);

关于c# - 如何为 mdi 容器创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758552/

相关文章:

c# - 调用 NavigationContext 时出现 NullReferenceException

c# - 如何动态填充图片框

html - Windows 窗体到 HTML

c# - WinForm 底部边距属性不执行任何操作

.net - 在 .NET 中创建新的最大化 MDI 子窗体的图标问题

Delphi MDI 应用程序和 MDI 子项的标题栏

c# - 如何使用 C# 将 JSON 发布到服务器?

c# - 绑定(bind)到嵌套属性只显示列表中的第一项

delphi - 主窗体上的框架 FormStyle = fsMDIForm

c# - C# 中的 System.String[*] 和 System.String[] 区别