2013-08-24 50 views
0

我想在用戶選擇文本時顯示組合框中的項目列表。我有一個觸摸屏應用程序,它很難打下拉箭頭,所以我想我會顯示菜單時,文本被選中,這往往是什麼被觸動。我正在使用VS 2008.以及在VS2008中提供觸摸友好的數字上傳解決方案的建議?ComboBox在文本選擇上顯示下拉菜單

+1

有些代碼呢?你有什麼嘗試? – Shoe

回答

2

您可以使用ComboBox.Click事件處理程序和ComboBox.DroppedDown財產,做這樣的事情:

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

你也可以使用相同的事件處理程序的的NumericUpDown並使用mouseposition以及位置和高度在的NumericUpDown來獲得點擊是否是以上或做這樣的事情的控制的中間線以下(不知道我的數學這裏是完美的,但它工作時,我測試過):

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

HTH

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; 
}