alb*_*ein 12 designer visual-studio-2008 winforms
我有一个winforms项目,我在程序集A上创建了一个类,它继承自System.Windows.Forms.Form作为我项目中各种表单的基类,基类类似于:
public partial class DataForm<T> : Form where T : class
{
T currentRecord;
protected T CurrentRecord
{
get
{
return currentRecord;
}
set
{
currentRecord = value;
CurrentRecordChanged();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在程序集B上创建一个继承自我的DataForm的表单时,设计器将无法加载,但如果我编译它,应用程序运行正常.
表格如下:
public partial class SomeTableWindow : DataForm<SomeTable>
{
public SomeTableWindow ()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
The designer could not be shown for this file because none of the classes within it can be designed.
The designer inspected the following classes in the file: CultivosWindow --- The base
class 'TripleH.Erp.Controls.DataForm' could not be loaded. Ensure the assembly has
been referenced and that all projects have been built.
Instances of this error (1)
1. Hide Call Stack
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
Run Code Online (Sandbox Code Playgroud)
这是设计师的错误吗?我做错了吗?这有什么解决方法吗?
谢谢您的帮助
tst*_*ter 16
这是一个已知的限制.基本上,您可以通过声明继承自泛型类的另一个类来解决此问题.
例如:
class Generic<T> : UserControl
{
}
Run Code Online (Sandbox Code Playgroud)
然后
class GenericInt : Generic<int> { }
Run Code Online (Sandbox Code Playgroud)
然后使用GenericInt而不是Generic.我知道的.
| 归档时间: |
|
| 查看次数: |
3388 次 |
| 最近记录: |