CheckedListBox能否直接绑定类,然后再遍历选中项,全部实例化?

中文命名法 2018-01-31 03:20:08
List<接口> 集合 = new List<接口>();
interface 接口
{...}

class A:接口
{...}
class B:接口
{...}
class C:接口
{...}

void 绑定CheckedListBox()
{
if(选择框.CheckedItems.Contains(A))
集合.Add(new A());
else if(选择框.CheckedItems.Contains(B))
集合.Add(new B());
else if(选择框.CheckedItems.Contains(C))
集合.Add(new C());
}
void 启动功能()
{
foreach(var 成员 in 集合)
成员.启动功能();
}
这是现在的写法。有没有这种可能:
在 绑定CheckedListBox() 方法里只是把class类型绑定到CheckedListBox的value上,但是不进行实例化。之后遍历CheckedListBox的选中项,将它实例化,再增加到集合里去?
...全文
398 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
中文命名法 2018-04-18
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
List<Type> 集合 = new List<Type>();
集合.Add(typeof(A));
多学一些面向类型、面向对象的编程就会知道区分对象和对象类了。。
这个写法很好,能不能通过typeof得到类型后,再用这个类型实例化一个实例出来?譬如:
class 自定义类
{
    ...
}
Type 类型 = typeof(自定义类);
类型 实例 = new 类型();    // 报错;
  • 打赏
  • 举报
回复
少了一个字母 t,自己补上。
  • 打赏
  • 举报
回复
每个control都是有Tag属性的,你可以将完整的classname赋给Tag属性,当然也可以后台直接赋Type
  • 打赏
  • 举报
回复
获取类型集合那个是
List<Type> 集合 = new List<Type>();
集合.Add(ypeof(A));
多学一些面向类型、面向对象的编程就会知道区分对象和对象类了。。
秋的红果实 2018-02-01
  • 打赏
  • 举报
回复
理论上可以,只是,怎么把class类型绑定到checkedlistbox的value上 我试了下不行,也许我的方法不对 不知道你怎么会有这个想法,一般情况checkedlistbox的项是初始化时建好的,一般就是文本 void 绑定CheckedListBox() { 似乎不是绑定checkedlistbox,而是给“集合”添加元素
xuzuning 2018-02-01
  • 打赏
  • 举报
回复
你可以这样绑定
            dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("class", typeof(接口));
            dt.Rows.Add("A", new A());
            dt.Rows.Add("B", new B());
            选择框.DataSource = dt;
            选择框.ValueMember = "class";
            选择框.DisplayMember = "Name";
如果先不实例化的话,可能要用到反射,很麻烦 其实,先都实例化好也无所谓,既然开列了,总是可能要用到的
shoppo0505 2018-01-31
  • 打赏
  • 举报
回复
你可以使用Gridview,然后添加templatecolumn,里面是一个checkbox,绑定Gridview的datasource,然后再在itembound事件中绑定checkbox
shoppo0505 2018-01-31
  • 打赏
  • 举报
回复
用datalist也可以,新版的,好像里面有个默认的checkbox

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧