2

Winform では、フォームの下部に ComboBox があります。アプリケーションを実行すると、ComboBox はドロップダウン リストを下方向に描画し、フォームの境界線からはみ出します。

ComboBox ドロップダウン リストを上方向に描画する方法を教えてください。

前もって感謝します。

4

1 に答える 1

3

すぐにはできませんが、実行できます。必要な手順の概要を説明します。

  • イベント ハンドラを にアタッチしComboBox.DropDownます。
  • の左/下の位置ComboBoxを画面座標に変換し、オフセットを追加します (たとえば、両方の値に +1)。
  • use を使用WindowFromPoint()して、ドロップダウン ウィンドウのハンドルを取得します (コントロールの下にあるため、+1 になります)。
  • ドロップされたウィンドウの境界を取得します (必要に応じてCB_GETDROPPEDCONTROLRECTまたはを使用できGetWindowRect()ます)。
  • を使用して、ウィンドウを新しい位置 (ComboBox一番上からドロップダウンしたウィンドウの高さ)に移動しMoveWindow()ます。

それで全部です

EDIT
ポイント2と4をマージできることに注意してくださいSendMessage.1CB_GETDROPPEDCONTROLRECTつで、そのウィンドウの境界と、のパラメータとして使用する場所を取得できますWindowFromPoint()。この方法では、ドロップダウンされたウィンドウが常に下向きであると主張しません (ウィンドウがいつ画面境界に接触するかは不明であり、将来のバージョンでは変更される可能性さえあります)。

于 2012-10-10T10:24:58.363 に答える