自定义控combobox怎么加入checkbox【传送门内有100分】

Neil198 2010-03-26 04:26:05
传送门

控件版块真是凄凉啊
...全文
292 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbo126 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 neil198 的回复:]
到底是XXXHOST..我现在用combobox 实现了,就是选一个以后下拉列表就消失了。就是你说的那个问题。。怎么才能让他不消失呢。。。。
[/Quote]
刚才在网上搜了一下,找到了,就是ToolStripControlHost
具体用法见这里:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripcontrolhost.aspx

这个只能实现下拉框的弹出功能,其他的需要你自己去实现。
一般你可能需要做以下工作:继承一个UserControl。在上面需要绘制ComboBox的外观和选中的数据
继承一个ListBox,设置为自绘制模式(即在绘制项的时候添加CheckBox外观),然后将继承的ListBox加入ToolStripControlHost,然后再和上面那个UserControl关联,具体上面那个连接有详细的用法。

如果你自己纯属学习研究,建议你先弄弄这个;如果你有项目等着急用,19楼的那个“双钻”老师推荐的就很好,你可以拿过来就用!
liuyu520hong 2010-03-27
  • 打赏
  • 举报
回复
网上有,搜一下吧!引入DLL就可以用了.自己写多浪费时间!
xjerp 2010-03-26
  • 打赏
  • 举报
回复
学习学习
benbenhuo 2010-03-26
  • 打赏
  • 举报
回复
- -传送门
圣光照耀着你们~
Neil198 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jbo126 的回复:]
引用 12 楼 cjcgy 的回复:
嘿嘿, 有个很无耻的办法!!
首先, ComboBox自己写。
也很好写的。
点击右面的Button, 就Show一个Form出来。
如果不想丢焦点, 就把Form的TopMost设置为true, 然后把焦点切回到原来的Form就可以了。
但是后面处理麻烦些。
不过丢了焦点一般也无所谓。

然后那个Form上, 放一个DataGridView……
[/Quote]
到底是XXXHOST..我现在用combobox 实现了,就是选一个以后下拉列表就消失了。就是你说的那个问题。。怎么才能让他不消失呢。。。。
jbo126 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cjcgy 的回复:]
嘿嘿, 有个很无耻的办法!!
首先, ComboBox自己写。
也很好写的。
点击右面的Button, 就Show一个Form出来。
如果不想丢焦点, 就把Form的TopMost设置为true, 然后把焦点切回到原来的Form就可以了。
但是后面处理麻烦些。
不过丢了焦点一般也无所谓。

然后那个Form上, 放一个DataGridView。
绑定到你指定的数据源上。

我……
[/Quote]

唉~~~~~~~~~~~,的确不是一般的“无耻”啊!!!
下拉框本就是一个单选控件,你加复选框又是为的啥呢?你如果不想支持多选,而仅仅是想得到一个视觉效果的话我倒是可以给你个建议:

如果是我的话我可能将DrowMode设置为自定义绘制模式(MD,我忘了该属性的值怎么写了,反正除了Normal之外的另外两个都行,唯一的区别是有一个要重写OnMeasureItem)!
在OnDrawItem方法内进行自定义绘制,这时你可以在左侧留一个区域,用CheckBoxRenderer根据实际情况进行绘制复选框的外观,比如根据选择状态什么的。

如果你还想在功能上支持多选,这个我比较头痛,还外观上也可以实现,但不能用ComboBox,我记得什么地方有个DropControlHost还是别的什么(我这人啥都行,就是记性不好!)可以实现,因为它在你点击等操作后不会自己消失,需要你手动关闭!
这时候你继承一个UserControl,大小和普通的ComboBox差不多就行,在上面用ComboBoxRenderer会制ComboBox的外观,然后与那个###Host关联,。。。。算了,你看MSDN吧,那上面比我说的好!!!
lee_b 2010-03-26
  • 打赏
  • 举报
回复
tan124 2010-03-26
  • 打赏
  • 举报
回复
WPF实现容易
Neil198 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 guanmingle 的回复:]
http://www.codeproject.com/KB/combobox/checkcombo.aspx
我前段时间也用过这个,很不错,开源的
[/Quote]
谢谢,我去下来看看
Neil198 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]
http://www.evget.com/zh-CN/Info/catalog/7716.html
[/Quote]
谢谢~!
Neil198 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lee_b 的回复:]
lz,发个现成的给你啊
[/Quote]
我有一个现成的。但是那个太复杂了。看不懂。。。现在只是想求个方法。不仅是这两个控件。是一般控件重写的方法。。
cjcgy 2010-03-26
  • 打赏
  • 举报
回复
嘿嘿, 有个很无耻的办法!!
首先, ComboBox自己写。
也很好写的。
点击右面的Button, 就Show一个Form出来。
如果不想丢焦点, 就把Form的TopMost设置为true, 然后把焦点切回到原来的Form就可以了。
但是后面处理麻烦些。
不过丢了焦点一般也无所谓。

然后那个Form上, 放一个DataGridView。
绑定到你指定的数据源上。

我相信, 在DataGridView上做checkbox, 对大家来说都是小菜一碟。

GrapeCity的GcComboBox就是用类似的方法做的。
guanmingle 2010-03-26
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/combobox/checkcombo.aspx
我前段时间也用过这个,很不错,开源的
amandag 2010-03-26
  • 打赏
  • 举报
回复
用WPF实现比较容易
lee_b 2010-03-26
  • 打赏
  • 举报
回复
顶,人来了MM我,现成的,,搞点分,好像有两百喔。。。
。给你发邮箱。
lee_b 2010-03-26
  • 打赏
  • 举报
回复
顶,人来了MM我,现成的,,搞点分,好像有两百喔。。。
。给你发邮箱。
lee_b 2010-03-26
  • 打赏
  • 举报
回复
顶,人来了MM我,现成的,,搞点分,好像有两百喔。。。
。给你发邮箱。
hejialin666 2010-03-26
  • 打赏
  • 举报
回复
两个贴都看了
推荐你看我当初的问题:
http://topic.csdn.net/u/20100119/10/64803775-3a2c-4eb3-bbb5-f7cc47c1102c.html
lee_b 2010-03-26
  • 打赏
  • 举报
回复
人呢。
加载更多回复(4)

110,571

社区成员

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

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

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