C# 如何继承通用表单并在VisualStudio设计器中打开它?
在我的应用程序中,我有一个C# 如何继承通用表单并在VisualStudio设计器中打开它?,c#,visual-studio,generics,inheritance,windows-forms-designer,C#,Visual Studio,Generics,Inheritance,Windows Forms Designer,在我的应用程序中,我有一个BaseForm,其中包含一个泛型成员: public partial class BaseForm<T> : Form where T : Presenter { protected T Presenter; public BaseForm() { InitializeComponent(); } } public分部类基窗体:其中T:Presenter的窗体 { 受保护的T演示者; 公共基表() { 初
BaseForm
,其中包含一个泛型成员:
public partial class BaseForm<T> : Form where T : Presenter
{
protected T Presenter;
public BaseForm()
{
InitializeComponent();
}
}
public分部类基窗体:其中T:Presenter的窗体
{
受保护的T演示者;
公共基表()
{
初始化组件();
}
}
现在我需要的是从我的基窗体继承一个窗体
public partial class SampleForm : BaseForm<SamplePresenter>
{
public SampleForm()
{
InitializeComponent();
Presenter = new SamplePresenter();
}
}
public分部类SampleForm:BaseForm
{
公共样本形式()
{
初始化组件();
Presenter=新的SamplePresenter();
}
}
问题是Visual Studio设计器没有显示从BaseForm
派生的SampleForm
它给出了以下警告:
警告1无法为此文件显示设计器,因为无法设计其中的任何类。设计师检查了文件中的以下类:
SampleForm---无法加载基类“Invoice.BaseForm”。确保部件已被引用,并且已生成所有项目。0 0
我怎样才能克服这个问题
顺便说一句,我看过了,但没有真正了解如何解决这个问题。设计师不支持这一点,正如那篇文章中所描述的 您需要这个基类:
public partial class SampleFormIntermediate : BaseForm<SamplePresenter>
{
public SampleFormIntermediate()
{
InitializeComponent();
Presenter = new SamplePresenter();
}
}
这样,Visual Studio“理解”在设计器中打开什么以及如何打开它。在不同的继承类中使用不同的演示者不是一个好主意。@Magnus:OPs问题集中在Visual Studio designer集成上。没别的了。我想这就是我想要的。谢谢,这正是我想要的。现在我可以有一个测试包,在其中我可以用设计器打开UI,并通过泛型实现实际的项目。再次感谢:)@Magnus您还可以提供一份文档或一些其他相关链接,帮助您找到解决方案吗?这个解决方案对我很有效,现在我想知道为什么设计师会这样做。这个答案非常有用,特别是考虑到这个解决方案显然是违反直觉的。谢谢
public partial class SampleForm : SampleFormIntermediate
{
}