首页新闻找找看学习计划

如何实现C#winform中右击combobox下拉选项中的某一项弹出右键菜单?

0
悬赏园豆:100 [待解决问题]

如何实现C#winform中右击combobox下拉选项中的某一项弹出右键菜单?

网上看到的屏蔽并自定义右键菜单只是针对combobox控件本身,而没有针对下拉选项。

在网上看到定义一个listbox来当作下拉菜单,不是很好。

是要自定义事件吗?不是很懂,请大家帮帮忙,困扰了一天。

又看到用DrawItem 这个事件,可是还是没有实现

123dcdc的主页 123dcdc | 初学一级 | 园豆:6
提问于:2013-07-26 10:35
< >
分享
所有回答(3)
0

呵呵,你试试用contextMeunScript控件

ocean397 | 园豆:144 (初学一级) | 2013-07-26 10:55

contextMeunScript是菜单吧,我主要是想能够监听到combobox的下拉选项的右击事件,然后弹出contextMeunScript控件

支持(0) 反对(0) 123dcdc | 园豆:6 (初学一级) | 2013-07-26 11:11
0

win32 api

空明流光 | 园豆:48 (初学一级) | 2013-07-26 11:16

能监测到combobox的下拉选项的右击事件?

支持(0) 反对(0) 123dcdc | 园豆:6 (初学一级) | 2013-07-26 11:18

查了查,觉得应该可以,可就是不会写,求帮助

支持(0) 反对(0) 123dcdc | 园豆:6 (初学一级) | 2013-07-26 11:23

@123dcdc: 可以肯定是可以,但没写过你这么详细的需求。拦截window message,其中有鼠标单击,单击的hwnd,即combobox的句柄,然后再通过相关api捕获当前鼠标处的listitem,然后你在指定位置弹出你的菜单就可以了。代码没有,思路如此。

支持(0) 反对(0) 空明流光 | 园豆:48 (初学一级) | 2013-07-26 11:40

@沧海一杰: 半路出家,很多内部机制啥的都不懂,得好好看看了

关键是combobox的下拉选项算是它的一部分吗,combobox的句柄里包含下拉选项的信息吗?

支持(0) 反对(0) 123dcdc | 园豆:6 (初学一级) | 2013-07-26 11:59
0

首先应该弄清楚做这个功能的需求,看是不是可以换种方式实现你的要求。一般来说,在弹出combobox的选项里面再进行右键,并执行相应功能,是很少这样做的,因为这样做使得操作过于复杂,交互性不好,完全可以换一些方式来做。

另外,如果你非得实现,我建议用一个TEXTBOX加一个LISTBOX来进行组合,可以更好的达到这种效果,你在问题里面也提到过。选择listbox的某个项,然后右键,比较容易操作。我说下简要的实现思路:

1 在界面上的textbox下面放置好一个Listbox,默认Listbox不显示;

2 实现textbox的MouseDown方法,当鼠标单击的时候,将Listbox显示;

3 单击listbox的某个项的时候可以弹出右键。

多说一句,其实如果你非得要弹出右键,就不要用combobox啦,也不要我上面的做法,直接一个listbox,上面填充一些项,可以选择,还可以在上面右键,不是很好?

附一张图:我以前做过的一个点击textbox弹出一个treeview,实现原理类似

寒蝉 | 园豆:202 (菜鸟二级) | 2013-07-26 16:49

其实就是想添加一个删除的功能,可以删除combobox下拉选项中的一项。在某一项上右击然后弹出菜单选择删除,类似于任务管理器那种(任务管理器貌似是listbox?),我觉得这种想法不应该只有我一个人有过啊?

了解win32 api吗?请问用这个可以实现吗

支持(0) 反对(0) 123dcdc | 园豆:6 (初学一级) | 2013-07-29 10:08

@123dcdc: 不知道你解决了不。combobox下拉右键我觉得非常少见,几乎没有见过。一般是下拉出来的项有个删除按钮,然后可以删除该记录。像搜索引擎或浏览器那样保存搜索记录的,可以一项一项删除,这样交互很好。这个实在要做,应该没问题的,C#实现这个应该比较简单。

支持(0) 反对(0) 寒蝉 | 园豆:202 (菜鸟二级) | 2013-08-21 17:35

@寒蝉: 任务管理器就是我需要的效果啊,虽然不是combobox的

支持(0) 反对(0) 123dcdc | 园豆:6 (初学一级) | 2013-09-16 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册