呵呵,你试试用contextMeunScript控件
contextMeunScript是菜单吧,我主要是想能够监听到combobox的下拉选项的右击事件,然后弹出contextMeunScript控件
win32 api
能监测到combobox的下拉选项的右击事件?
查了查,觉得应该可以,可就是不会写,求帮助
@123dcdc: 可以肯定是可以,但没写过你这么详细的需求。拦截window message,其中有鼠标单击,单击的hwnd,即combobox的句柄,然后再通过相关api捕获当前鼠标处的listitem,然后你在指定位置弹出你的菜单就可以了。代码没有,思路如此。
@沧海一杰: 半路出家,很多内部机制啥的都不懂,得好好看看了
关键是combobox的下拉选项算是它的一部分吗,combobox的句柄里包含下拉选项的信息吗?
首先应该弄清楚做这个功能的需求,看是不是可以换种方式实现你的要求。一般来说,在弹出combobox的选项里面再进行右键,并执行相应功能,是很少这样做的,因为这样做使得操作过于复杂,交互性不好,完全可以换一些方式来做。
另外,如果你非得实现,我建议用一个TEXTBOX加一个LISTBOX来进行组合,可以更好的达到这种效果,你在问题里面也提到过。选择listbox的某个项,然后右键,比较容易操作。我说下简要的实现思路:
1 在界面上的textbox下面放置好一个Listbox,默认Listbox不显示;
2 实现textbox的MouseDown方法,当鼠标单击的时候,将Listbox显示;
3 单击listbox的某个项的时候可以弹出右键。
多说一句,其实如果你非得要弹出右键,就不要用combobox啦,也不要我上面的做法,直接一个listbox,上面填充一些项,可以选择,还可以在上面右键,不是很好?
附一张图:我以前做过的一个点击textbox弹出一个treeview,实现原理类似
其实就是想添加一个删除的功能,可以删除combobox下拉选项中的一项。在某一项上右击然后弹出菜单选择删除,类似于任务管理器那种(任务管理器貌似是listbox?),我觉得这种想法不应该只有我一个人有过啊?
了解win32 api吗?请问用这个可以实现吗
@123dcdc: 不知道你解决了不。combobox下拉右键我觉得非常少见,几乎没有见过。一般是下拉出来的项有个删除按钮,然后可以删除该记录。像搜索引擎或浏览器那样保存搜索记录的,可以一项一项删除,这样交互很好。这个实在要做,应该没问题的,C#实现这个应该比较简单。
@寒蝉: 任务管理器就是我需要的效果啊,虽然不是combobox的