0

当用户选择文本时,我想在组合框中显示项目列表。我有一个触摸屏应用程序,很难点击下拉箭头,所以我想我会在选择文本时显示菜单,这通常是被触摸的内容。我正在使用 VS 2008。以及对 VS2008 中触摸友好的数字上下解决方案的建议?

4

2 回答 2

2

您可以使用ComboBox.Click事件处理程序和ComboBox.DroppedDown属性并执行以下操作:

private void ComboBox1_Click(System.Object sender, System.EventArgs e)
{
    ComboBox1.DroppedDown = true;
}

您还可以对 numericUpDown 使用相同的事件处理程序,并使用鼠标位置以及 NumericUpDown 的位置和高度通过执行类似的操作来获取单击是高于还是低于控件的中线(不是确定我在这里的数学是否完美,但在我测试时它有效):

if ((MousePosition.Y - this.PointToScreen(NumericUpDown1.Location).Y < NumericUpDown1.Height / 2)) 
{
    NumericUpDown1.Value += 1;
}
else 
{
    NumericUpDown1.Value -= 1;
}

高温高压

于 2013-08-25T00:57:29.843 回答
0

我正在处理类似的情况。我们想让文本区域的行为与右侧的按钮相同。(IE用户点击获取下拉框)

davidsbro 与我最终做的类似,但我们希望如果他们再次点击它就关闭它,所以值变成了dropDown.DroppedDown = !dropDown.DroppedDown;.

这样做的问题是,如果用户单击下拉框的右键,则会打开对话框,然后调用onClick事件。

我通过onmouseover事件跟踪原始状态解决了这种情况。如果值发生了变化,我们必须假设选择框上的按钮已经处理了点击。

private bool cbDropDownState = false;
private void dropDown_MouseEnter(object sender, EventArgs e)
{
    cbDropDownState  = dropDown.DroppedDown;
}

private void dropDown_Click(object sender, EventArgs e)
{
    if (dropDown.DroppedDown == cbDropDownState )
        dropDown.DroppedDown = !dropDown.DroppedDown;
}
于 2014-07-10T15:04:50.863 回答