首页 新闻 会员 周边

【Winform】用户控件继承一个有泛型的父控件后设计器出现错误

0
悬赏园豆:100 [已解决问题] 解决于 2013-07-27 13:41

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可以完成既定的业务逻辑。

出现这个错误就是不方便看见这个控件的布局,所以想知道怎么回事。

园子的大神们怎么看?

哈哈好玩的主页 哈哈好玩 | 初学一级 | 园豆:112
提问于:2013-07-27 09:00
< >
分享
最佳答案
0

要看看发生了什么错误,在加载视图的时候会执行这两个类中的构造方法,可能构造方法里面出错了

曾经在用IrisSkin时遇到过这种问题,在父类构造方法里加载主题文件,结果在设计器模式下找不到主题文件(运行模式是正常的),然后就出来类似问题

收获园豆:100
_A_A | 小虾三级 |园豆:1139 | 2013-07-27 09:13

就是把用户控件的父类UserControl修改为泛(这个泛型继承自UserControl)型就出现这种错误了

你可以这么做:

让一个泛型继承一个UserControl(泛型可以是任意其他的类),

然后再建一个用户控件继承这个泛型,

这个子用户控件就会出现这种设计器的错误而无法看见控件的布局。

我猜也是这个泛型的原因,但是不知怎么两全其美:

既让这个用户控件继承这个泛型的用户控件,也希望能在设计器看见泛型用户控件的布局。

哈哈好玩 | 园豆:112 (初学一级) | 2013-07-27 09:25
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

哈哈好玩 | 园豆:112 (初学一级) | 2013-07-27 09:28

@哈哈好玩: 应该是泛型的特点导致的,试试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

_A_A | 园豆:1139 (小虾三级) | 2013-07-27 10:26

@囧月: 谢谢了,那个中间类也不能是抽象类,看来这个东西要额外处理才可以

现在已经找到中间办法

哈哈好玩 | 园豆:112 (初学一级) | 2013-07-27 13:41
其他回答(1)
0

你的中间方法是什么,我现在也遇到这个问题

BLoodMaster | 园豆:135 (初学一级) | 2014-01-10 11:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册