c#windows窗体 怎么给用户控件传递泛型类
怎么给用户控件传递泛型类其实就是想实现传DataGridView控件名和数据模型实例就可以实现绑定不同DataGridView和不同list<model>实例就可以控制D...
怎么给用户控件传递泛型类
其实就是想实现传DataGridView控件名和数据模型实例就可以实现绑定不同DataGridView和不同list<model>实例就可以控制DataGridView分页的自定义控件 展开
其实就是想实现传DataGridView控件名和数据模型实例就可以实现绑定不同DataGridView和不同list<model>实例就可以控制DataGridView分页的自定义控件 展开
3个回答
展开全部
真是越说越远了,汗一个。
看到你的用户控件代码中的partial了么,
public partial class pageChangeByLinklabel<T>:UserControl
partial说明此类还有一半在另外的cs文件中,正是系统替你写好的pageChangeByLinklable.designer.cs
去那边把类签名也改成泛型版就好了。找不到InitializeComponent方法是因为此方法由系统自己成成,丢在那边了。
此外,给用户控件(或者说一个类)传类型参数真的是有很多种方法。
一、在类说明上直接用泛型声明
二、在类的构造中加入参数(Type t),准确的说不是泛型但是用法类似。
三、在类中加一个设置参数的方法,此方法可以写成泛型版。
四、在类中加一个设置参数的方法,传入参数Type t。
五、向类中传T类型的实例instance,类中自己保存typeof(instance)。
等等……
看到你的用户控件代码中的partial了么,
public partial class pageChangeByLinklabel<T>:UserControl
partial说明此类还有一半在另外的cs文件中,正是系统替你写好的pageChangeByLinklable.designer.cs
去那边把类签名也改成泛型版就好了。找不到InitializeComponent方法是因为此方法由系统自己成成,丢在那边了。
此外,给用户控件(或者说一个类)传类型参数真的是有很多种方法。
一、在类说明上直接用泛型声明
二、在类的构造中加入参数(Type t),准确的说不是泛型但是用法类似。
三、在类中加一个设置参数的方法,此方法可以写成泛型版。
四、在类中加一个设置参数的方法,传入参数Type t。
五、向类中传T类型的实例instance,类中自己保存typeof(instance)。
等等……
更多追问追答
追问
请问大神
按照你上面那个方法,没有错了,不过由于在类名后面加了,不能生自定义控件的dll包,
--四、在类中加一个设置参数的方法,传入参数Type t。Type参数自能够匹配字段类型,不能匹配内类型,
怎么弄一个属性,用来获得类型还是不知道
追答
实际上如果你一定要在UserControl中改签名的话,只要你在设计器使用了任何资源(如图片等),一定会报错的,因为设计器根本不能识别泛型扩展的用户控件。
“Type参数自能够匹配字段类型,不能匹配内类型”我不知道你“内类型”具体指什么。仅一般用途来说,在用户控件中维护一个private Type myType;随便怎么传都可以。
public void SetType(Type myType){this.myType=myType;}足够了。有了myType,虽然没有泛型T这样用起来方便,但是完全可以做一样的工作,比如返回一个myType类型的值之类。
此外想请你说明一下为什么一定要在用户控件类上用泛型?很多需求都可以有实现捷径的。
展开全部
兄弟,最后怎么解决的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重载构造函数
更多追问追答
追问
主要是在类名后后构造函数InitializeComponent();不能执行,不能初始化组件
追答
T是类型 你知定下类型就行了
public Form1(List list)
{
InitializeComponent();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询