public abstract partial class TListPager<TEntity, TRepository, TSqlStrConstruct> : UserControl public partial class PTADMINList : TListPager<Entity.PTADMIN.PTADMIN, Repository.PTADMINRepository.PTADMINRepository, Entity.PTADMIN.PTADMINSql>
【public abstract partial class TListPager<TEntity, TRepository, TSqlStrConstruct>】这个抽象用户控件类可以看见设计器内容
但是【public partial class PTADMINList 】 这个类设计器内容出现上面图中所示的警告
而整个项目编译可以顺利通过,而且设计器警告的PTADMINList可以完成既定的业务逻辑。
出现这个错误就是不方便看见这个控件的布局,所以想知道怎么回事。
园子的大神们怎么看?
要看看发生了什么错误,在加载视图的时候会执行这两个类中的构造方法,可能构造方法里面出错了
曾经在用IrisSkin时遇到过这种问题,在父类构造方法里加载主题文件,结果在设计器模式下找不到主题文件(运行模式是正常的),然后就出来类似问题
就是把用户控件的父类UserControl修改为泛(这个泛型继承自UserControl)型就出现这种错误了
你可以这么做:
让一个泛型继承一个UserControl(泛型可以是任意其他的类),
然后再建一个用户控件继承这个泛型,
这个子用户控件就会出现这种设计器的错误而无法看见控件的布局。
我猜也是这个泛型的原因,但是不知怎么两全其美:
既让这个用户控件继承这个泛型的用户控件,也希望能在设计器看见泛型用户控件的布局。
public abstract partial class TEditorBase <TEntity, TRepository, TSqlStrConstruct> : UserControl where TEntity:Yom.Extend.Entity.EntityBase where TRepository : Yom.Extend.Repository.RepositoryBaseRepository<TEntity, TSqlStrConstruct> where TSqlStrConstruct : Huawei.Data.SqlStrConstruct { public TEditorBase() { InitializeComponent(); } }
public partial class PTADMINEditor : TEditorBase<Entity.PTADMIN.PTADMIN,Repository.PTADMINRepository.PTADMINRepository,Entity.PTADMIN.PTADMINSql> { public PTADMINEditor() { InitializeComponent(); } }
这个子类的设计器因为警告出错。
这个例子中的泛型可以用其他的泛型替代吧,应该可以重现这个警告。
我的环境是vs2008
@哈哈好玩: 应该是泛型的特点导致的,试试msdn论坛上的一个方法:http://social.msdn.microsoft.com/Forums/windows/en-US/0c265543-d6f0-41f6-beeb-b89e0071c5c3/generic-user-controls
class MiddleClass : TEditorBase<Entity.PTADMIN.PTADMIN,Repository.PTADMINRepository.PTADMINRepository,Entity.PTADMIN.PTADMINSql>
class PTADMINEditor : MiddleClass
@囧月: 谢谢了,那个中间类也不能是抽象类,看来这个东西要额外处理才可以
现在已经找到中间办法
你的中间方法是什么,我现在也遇到这个问题