Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何编写执行此代码的函数_C#_Winforms_Mdiparent - Fatal编程技术网

C# 如何编写执行此代码的函数

C# 如何编写执行此代码的函数,c#,winforms,mdiparent,C#,Winforms,Mdiparent,我使用以下代码在MDI窗口中创建和显示表单: if (currentForm != null) { currentForm.Dispose(); } currentForm = new ManageCompanies(); currentForm.MdiParent = this; currentForm.Show(); currentForm.WindowState = Fo

我使用以下代码在MDI窗口中创建和显示表单:

        if (currentForm != null) {
            currentForm.Dispose();
        }
        currentForm = new ManageCompanies();
        currentForm.MdiParent = this;
        currentForm.Show();
        currentForm.WindowState = FormWindowState.Maximized;
我用这个代码显示了大约20个不同的表单

我想写一个这样的函数:

private void ShowForm(formClassName) {

            if (currentForm != null) {
                currentForm.Dispose();
            }
            currentForm = new formClassName();
            currentForm.MdiParent = this;
            currentForm.Show();
            currentForm.WindowState = FormWindowState.Maximized;
}
我是否必须以字符串或其他形式发送formClassName;以及如何将其包含在代码中。。。 我想要最终的代码…

尝试泛型:

 public void ShowForm<FormClass>() where FormClass: Form,new() {

        if (currentForm != null) {
            currentForm.Dispose();
        }
        currentForm = new FormClass();
        currentForm.MdiParent = this;
        currentForm.Show();
        currentForm.WindowState = FormWindowState.Maximized;
}

您还必须指定:

private void ShowForm<FormClass> where T : Form, new() {
private void ShowForm其中T:Form,new(){

请注意此处的new(),以便您可以默认构造FormClass,否则它将不允许您构造它。

选择整个代码块,然后按Ctrl-K或手动缩进4个空格。您的大多数问题是:“我想要…”本网站为您提供帮助,但不要认为这是理所当然的,请更好、礼貌地阐述您的问题,而不仅仅是我想要……无需我做任何其他努力就给我最终的代码……如果您只允许一个儿童窗口处于活动状态,那么使用MDI是没有意义的。@Davide Piras,我感谢您的评论……我将我记住了…我认为只有这个问题和其他问题是你提到的那种…在接下来的问题中,我将更好地阐述这些问题…尽可能有用…@Hans Passant,我是winforms开发的新手…我使用MDI保留一个通用工具栏和菜单栏…并更改内部页面…就像usi一样ng asp.net中的母版页…如果它是
:Form
,我不确定是否需要它。我把它放在那里,然后将它删除。它不是
where T
它是
where FormClass
,因为这是您命名类型变量的地方。@Aliostad,否则他将如何访问
mdipparent,Show()和WindowsState
?你说的
不会伤害你是什么意思,没有它你的代码就无法编译,它真的很伤害:)这就是为什么我们要指出编译错误。我们是一群受过专门训练的猴子,他们可以编译代码而不使用VS。
private void ShowForm<FormClass> where T : Form, new() {