2011-03-28 123 views
2

我想通過以下方式使用C#的WinForms組合框:捕獲點擊事件

一)定期使用:如果「向下箭頭」按鈕,在下拉區域打開,用戶選擇需要的項目 - 有沒有問題..

b)高級用途:如果用戶點擊到可編輯是下拉控制,打開與先進的選擇機制另一個對話框。

目前,我打電話組合框的onclick事件處理程序的高級對話。但是,現在經常使用DropDownbox不再可用。即使您僅點擊下拉箭頭,高級對話框也會打開。

我找不到,我可以用另一種可能的情況,所以我認爲我在事件處理程序來檢查,如果用戶點擊進入該控件的編輯部分或控制的按鈕。任何想法如何有效地做到這一點?

感謝所有提示。

回答

0

有兩個感興趣的事件; DropDown和Click。以「正常」方式處理DropDown。對於點擊,您可能會嘗試處理包含座標的MouseDown。將這些座標(基於光標在整個屏幕上的位置)轉換爲相對於控件的位置,並且如果鼠標當前位於控件的箭頭部分,則退出並允許默認行爲發生。否則,顯示更高級的下拉菜單。

0

我做到了(不是很漂亮但是它的工作原理)

void comboBox_Click(object sender, EventArgs e) 
{ 
    // Calculate cursor position 
    Point pointCursorLocal = this.PointToClient(Cursor.Position); 

    // Calculate rectangle of working area. 
    Rectangle rectangle = this.comboBox.Bounds; 
    rectangle.Size = new Size(rectangle.Size.Width - 10, rectangle.Height); 

    // Check them 
    if (rectangle.Contains(pointCursorLocal)) 
     // CLICK ON WORKING AREA ... 
}