当前位置:编程学习 > C#/ASP.NET >>

自定义ComboBox的Items类型

请教各位大侠,如何实现一个自定义的Combobox,主要实现的功能是我可以通过items.add,items.remove一些控件到Combobox,比如添加,删除一些button,textbox,lable等,也就是说Combobox可以添加删除子控件作为它的items。  combobox 控件 --------------------编程问答-------------------- 你何必这么做,你直接用string作为值,然后根据值去new 控件呗 --------------------编程问答-------------------- 我的意思是Items显示的是控件 而不是tostring得到的结果 --------------------编程问答-------------------- 类似与实现下面截图的效果:
--------------------编程问答-------------------- 类似与实现下面截图的效果:
--------------------编程问答-------------------- 继承要显示的控件,重写ToString()方法以在Combox中显示
比如
class MyLable : Label
{
     public override string ToString()
     {
          return base.Text;
     }
} --------------------编程问答-------------------- 这样只是把文本等一些信息给加进去了,我想要的是items就是控件本身,如果我想加进去的是文本,背景色,前景色,click事件,怎么办? --------------------编程问答-------------------- 用ContentControl作为每个Item的承载控件;
add操作: 不直接把控件加入combobox,而是先把控件装入ContentControl,然后再把ContentControl加进去。
remove操作就直接删除对应ContentControl....

俺的大致思路LZ看可行不? --------------------编程问答-------------------- zx5234104 ,你好,谢谢你的回复。
想请问一下ContentControl指的是?
另外假如你这种思路可行的话,如何实现items中的控件事件?
--------------------编程问答--------------------
引用 8 楼 zxz414644665 的回复:
zx5234104 ,你好,谢谢你的回复。
想请问一下ContentControl指的是?
另外假如你这种思路可行的话,如何实现items中的控件事件?


额。。Winform还是WPF? --------------------编程问答-------------------- 不好意思,是winform的 --------------------编程问答-------------------- 自定义控件吧 下拉用panel替代 --------------------编程问答-------------------- 你好,trustin ,谢谢你的回复。
请问,怎么用panel替代,怎么重写自定义?自定义重写哪个方法能够让panel替代下拉?你写过类似的例子吗?能贴代码吗? --------------------编程问答--------------------
引用 10 楼 zxz414644665 的回复:
不好意思,是winform的


额,winform的话没这么用过,你看能不能这样:
1. 新加个ComboboxItem对象,override一下toString方法,item的控件对象什么的都放里面
2. 重写combobox的OnDrawItem和OnMeasureItem方法,从上面的对象去读item的样式然后画上去
3. 通过selectedchange事件,去触发控件的相应事件。。比如调用button的PerformClick方法触发click事件之类的。。。。

没具体实现过。。不知道可行不。。。。
--------------------编程问答--------------------
引用 8 楼 zxz414644665 的回复:
zx5234104 ,你好,谢谢你的回复。
想请问一下ContentControl指的是?
另外假如你这种思路可行的话,如何实现items中的控件事件?


你直接用combox.Items.Add(myLabel);就可以了
ToString只是在界面上显示的东西
在代码中你仍然可以强制转换回来了,只不过是object类型,不是泛型
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,