Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#_.net_Winforms_Visual Studio 2010 - Fatal编程技术网

C# 在多个项目中使用可继承的表单

C# 在多个项目中使用可继承的表单,c#,.net,winforms,visual-studio-2010,C#,.net,Winforms,Visual Studio 2010,我创建了一个继承自system.windows.forms.form的windows玻璃窗体,然后将其放置在类库项目中 我现在想在多个其他windows窗体项目中使用此窗体。我该怎么做 我已经创建了对类库的引用,但我不知道如何实际获取表单。如果您已经有了引用,则只需使用它即可。将窗体的命名空间添加到类文件: using NamespaceOfWindowsGlassForm; 然后使用以下表格: WindowsGlassForm form = new WindowsGlassForm();

我创建了一个继承自system.windows.forms.form的windows玻璃窗体,然后将其放置在类库项目中

我现在想在多个其他windows窗体项目中使用此窗体。我该怎么做


我已经创建了对类库的引用,但我不知道如何实际获取表单。

如果您已经有了引用,则只需使用它即可。将窗体的命名空间添加到类文件:

using NamespaceOfWindowsGlassForm;
然后使用以下表格:

WindowsGlassForm form = new WindowsGlassForm();

如果你已经有了你的推荐信,你所需要做的就是使用它。将窗体的命名空间添加到类文件:

using NamespaceOfWindowsGlassForm;
然后使用以下表格:

WindowsGlassForm form = new WindowsGlassForm();

听起来你想让项目中的表单从我能说的玻璃表单中派生出来

确保你的GlassForm类是公开的;例如

public class GlassForm : System.Windows.Forms.Form
{
}
既然您已经验证了它是公共的,那么对于希望从GlassForm继承的任何表单,请将继承的类从form更改为GlassForm。例如

public class MyForm : Form
{
}

您的表单现在将从GlassForm派生,并且在WinForm设计器中也将如此。如果您只是想在项目中以调用的方式使用表单,那么您可以按照Bob Horn所说的做

using YourClassLibraryNamespace;

public class MyForm : Form
{
    public void ShowGlassFormModal() {
        using (GlassForm form = new GlassForm()) {
            form.ShowDialog();
        }
    }

    public void ShowGlassForm() {
        new GlassForm().Show();
    }
}

听起来你想让项目中的表单从我能说的玻璃表单中派生出来

确保你的GlassForm类是公开的;例如

public class GlassForm : System.Windows.Forms.Form
{
}
既然您已经验证了它是公共的,那么对于希望从GlassForm继承的任何表单,请将继承的类从form更改为GlassForm。例如

public class MyForm : Form
{
}

您的表单现在将从GlassForm派生,并且在WinForm设计器中也将如此。如果您只是想在项目中以调用的方式使用表单,那么您可以按照Bob Horn所说的做

using YourClassLibraryNamespace;

public class MyForm : Form
{
    public void ShowGlassFormModal() {
        using (GlassForm form = new GlassForm()) {
            form.ShowDialog();
        }
    }

    public void ShowGlassForm() {
        new GlassForm().Show();
    }
}

谢谢大卫,我把自己和用户控件搞混了。我真傻。一个问题:我假设如果我在设计器中将文本框之类的控件添加到glass窗体,那么它们将不会显示在继承的窗体上?添加到其他派生的父类的任何内容都将影响从父类派生的任何内容。因此,如果您确实向GlassForm添加了一个文本框,并且MyForm派生自GlassForm,那么它也将具有相同的文本框。我正在向Glassform添加一个文本框,但它没有显示在我的MyForm上。MyForm确实是继承的,因为它具有玻璃外观,所以代码可以正常工作。此外,如果我在winforms项目中重新创建玻璃窗体,继承将正常工作。这似乎与从类库中的表单继承有关。谢谢David,我对usercontrols感到困惑。我真傻。一个问题:我假设如果我在设计器中将文本框之类的控件添加到glass窗体,那么它们将不会显示在继承的窗体上?添加到其他派生的父类的任何内容都将影响从父类派生的任何内容。因此,如果您确实向GlassForm添加了一个文本框,并且MyForm派生自GlassForm,那么它也将具有相同的文本框。我正在向Glassform添加一个文本框,但它没有显示在我的MyForm上。MyForm确实是继承的,因为它具有玻璃外观,所以代码可以正常工作。此外,如果我在winforms项目中重新创建玻璃窗体,继承将正常工作。它似乎与从类库中的窗体继承有关。