문제

나는 다음과 같은 동작으로 Firefox 3 Awesomebar처럼 다소 동작하는 콤보 상자를 만들려고 노력하고 있습니다.

  1. 텍스트를 입력하십시오
  2. 비동기 적으로 결과를 다시 가져옵니다
  3. 위아래로 목록에서 결과를 선택하고 하지만 입력 상자에 입력 된 텍스트를 남겨 두어 사용자가 계속 편집하여 결과 세트를 다르게 제한 할 수 있습니다.
  4. 화재 입력 부모 양식이 처리 할 이벤트

비동기 결과가 있고 모든 작업을 필터링하지만 결과 내에서 표시 및 선택하는 방법은 없습니다.

콤보 상자는 화살 아래로 항목 상자를 자동으로 채 웁니다. 실패 #3.

DeVexpress 컨트롤이 있지만 콤보 상자도 똑같은 일을하고 반복하는 방법을 알 수 없습니다.

Lookupedit은 임의의 물건을 입력 할 수 없습니다. PopupContaineredit도 마찬가지입니다.

아래에 Listbox가있는 텍스트 상자와 같은 동작을 원하고 텍스트 상자의 위/다운 이벤트가 Listbox로 전달됩니다. 그러나 두 가지를 결합한 사용자 정의 컨트롤을 만들려고한다면 일반 콤보 상자의 드롭 다운과 같은 ListBox를 "플로트"하는 방법에 대한 실마리가 없습니다.

단서가 크게 감사드립니다!

도움이 되었습니까?

해결책

화살표 키를 사용하면 콤보 목록에서 값을 선택하고 현재 값을 덮어 쓰기 때문에 콤보 상자 대신 텍스트 상자를 사용해야 할 수도 있습니다. TextBox를 사용하면 TextChanged 이벤트에서 조회 할 수 있으며 Keypress 이벤트를 재정의하여 사용자가 입력 한 키를 수집하고 저장하여 현재 입력 한 값을 저장할 수 있습니다.
팝업 값 목록은 페인트 이벤트에서 자체적으로 그려야합니다.

이것은 지나치게 복잡해 보일 수 있지만 콤보 제어를 떨어 뜨리고 그 기능 중 일부를 직접 구현해야 할 것입니다.

다른 팁

SkyBound의 자동 완성 컨트롤을 사용하고 있습니다. 무료입니다. 멋진 바에서 동작을 근사화 할 수 있도록 사용자 정의 할 수 있습니다.

http://dev.skybound.ca/products/autocomplete/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top