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