2012-10-10 25 views
2

在Winform中,我在窗體底部有一個ComboBox。 當我運行應用程序時,ComboBox在向下的方向繪製下拉列表,從窗體邊框出來。如何使ComboBox下拉菜單向上繪製

我怎樣才能使ComboBox下拉列表繪製向上?

在此先感謝。

回答

3

這不是直接的,但你可以做到這一點,我就勾勒出你所需要的步驟:

  • 安裝一個甚至處理程序ComboBox.DropDown
  • ComboBox的左/底位置轉換爲屏幕座標,並將它們添加一個偏移量(例如對兩個值都+1)。
  • 使用使用WindowFromPoint()來獲取下拉窗口的句柄(它低於控件,這就是爲什麼+1)。
  • 獲取放置窗口的邊界(您可以根據需要使用CB_GETDROPPEDCONTROLRECTGetWindowRect())。
  • 使用MoveWindow()將窗口移動到新位置(ComboBox頂部 - 下降的窗口高度)。

這是所有

編輯
請注意,您可以用CB_GETDROPPEDCONTROLRECT合併點2和4,具有單SendMessage你可以得到窗口位置的範圍爲paameter用於WindowFromPoint() 。通過這種方式,您不會斷言下拉窗口總是向下(不確定窗口何時觸及屏幕邊界,甚至在未來版本中甚至可能會更改)。

+0

如果您有任何示例代碼,可以請您發佈相同的鏈接。 –

+0

@EthanHunt對不起,沒有示例代碼或代碼示例。基本上你必須使用DllImport函數(SendMessage,WindowFromPoint和MoveWindow),然後直接跟隨列表。 –