2012-10-10 2 views
2

Winform에서 ComboBox가 폼 아래쪽에 있습니다. 응용 프로그램을 실행할 때 ComboBox는 양식 테두리 밖으로 나가는 아래 방향으로 드롭 다운 목록을 그립니다.ComboBox 드롭 다운을 위쪽 방향으로 그리는 방법

어떻게 상향 방향으로 그릴 수있는 콤보 상자 드롭 다운 목록을 만들 수 있습니까?

미리 감사드립니다.

답변

3

그것은 바로 아니지만 당신이 그것을 할 수 있습니다, 난 그냥 당신이 필요로하는 단계를 간략하게 설명합니다 :

  • ComboBox.DropDown에 더 핸들러를 연결합니다.
  • ComboBox의 왼쪽/아래쪽 위치를 화면 좌표로 변환하고 오프셋 (예 : 양쪽 값 모두 +1)을 추가하십시오.
  • 드롭 다운 창 핸들을 얻으려면 WindowFromPoint()을 사용하십시오 (컨트롤 아래에 있으므로 +1이 필요합니다).
  • 드롭 된 창의 경계를 가져옵니다 (원하는 경우 CB_GETDROPPEDCONTROLRECT 또는 GetWindowRect()을 사용할 수 있음).
  • MoveWindow()을 사용하여 창을 새 위치 (ComboBox 위쪽 - 아래로 떨어 뜨린 창 높이)로 이동합니다. 의

모든

편집
당신이 WindowFromPoint()에 대한 paameter로 사용하는 창 위치의 경계를 얻을 수 CB_GETDROPPEDCONTROLRECT있는 단일 SendMessage으로, 지점 2와 4를 병합 할 수 있습니다 주 . 이 방법으로 드롭 다운 된 윈도우가 항상 아래로 내려 왔다고 주장하지 않습니다 (윈도우가 화면 경계에 닿았을 때 확실하지 않고 이후 버전에서도 바뀔 수 있습니다).

+0

샘플 코드가있는 경우 동일한 링크를 게시 할 수 있습니까? –

+0

@EthanHunt 죄송합니다, 샘플 코드 또는 코드 예제가 없습니다. 기본적으로 DllImport 함수 (SendMessage, WindowFromPoint 및 MoveWindow)를 사용하고 꽤 직접 목록을 따라야합니다. –

관련 문제