ComboBox显示文本选择的下拉菜单

时间:2013-08-24 23:34:54

标签: c# visual-studio-2008 combobox touchscreen numericupdown

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

2 个答案:

答案 0 :(得分: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;
}

HTH

答案 1 :(得分: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;
}