将鼠标指针位置设置为组合框中的选定项目

时间:2012-02-10 16:41:56

标签: vb.net winforms combobox mouse

我有一个组合框放下而不是下降。我将所选项目设置为列表顶部的项目。我想将鼠标指针移动到指向它,以便想要点击该项目的用户不必移动他的鼠标。我找到了如何移动指针,它是用这个命令:

Windows.Forms.Cursor.Position = New System.Drawing.Point(x,y)

但我需要知道如何在组合框中获取所选项目的位置。

2 个答案:

答案 0 :(得分:0)

如果问题是第一项距离组合太远:你不能反转项目的顺序吗?因此,第一个也是最常点击的项目成为最后一个项目,因此将非常接近组合。也许你也可以在点击次数最多的项目和其他项目之间插入一个空项目,以使其脱颖而出。

更新1
因此,如果控件是标准的winform组合框,您可以尝试检查属性ItemHeight的值,然后将此值乘以下拉列表中的项目数,这应该为您提供下拉列表中第一个项目的位置。
使用此值可能您将能够计算鼠标光标的放置位置。

注意事项:

  • 您需要检查这是否适用于所有计算机
  • 您需要使用不同的字体/字体大小测试它是否正常工作(ItemHeight属性是只读的,并且绑定到选定的字体/字体大小)
  • 你应该尝试当用户更改系统字体大小放大倍数时发生的事情(120dpi 125%/ 150%)注意WinXP和Win7以不同的方式处理这个参数
  • 检查屏幕上是否有下拉列表中所有项目的空间
  • 将下拉列表配置为具有MaxDropDownItems>而不是下拉列表中的数字

答案 1 :(得分:0)

在旅行网站上搜索目的地时,它们通常会显示已排序的目的地列表,但在开头的列表中有2-3个最常见的目的地。这样,您既可以遵守标准行为,又可以让最终用户轻松生活。

我会在组合框的末尾添加一个快速列表,其中包含最常用的项目,因此无需移动鼠标超过几毫米即可轻松选择。如果用户想要选择其他任何内容,则排序列表将在上面。程序启动时将最后一项设置为选中("选择目的地" -item)。

(然后我会向客户解释这是用户期望的,而不是单独移动的鼠标指针,希望客户改变主意。)

像这样:

enter image description here