2013-10-09 2 views
1

나는 오늘 아침 내 머리를 아프게하고있다.목록 상자 높이가 다른 값으로 대체됩니까?

텍스트 상자와 목록 상자가있는 사용자 정의 컨트롤을 만들었습니다. 목록 상자는 텍스트 상자에 입력 된 텍스트가 들어있는 모든 항목을 표시해야합니다.

Like 검색 기능이있는 콤보 박스 여야합니다.

모든 검색은 목록 상자의 크기 조정 만 특정 지점에서 실패하고 어떤 문제인지 파악할 수 없습니다.

아래 코드는 완벽하게 실행됩니다. 그러나 viewableRows = 코드에서 1

콘솔 문

if (this.lbResults.Visible) 
{ 
      int viewableRows = this.lbResults.Items.Count; 
      Console.WriteLine(viewableRows.ToString()); 
      if (viewableRows > this.maxItemsDisplayed) 
      { 
       viewableRows = this.maxItemsDisplayed; 
      } 
      Console.WriteLine(viewableRows.ToString()); 

      int lbresults_height = ((viewableRows) * 15) ; 

      Console.WriteLine(lbresults_height); 

      this.ResizeControl(this.Width, this.txtSearch.Height + lbresults_height); 
      this.lbResults.Size = new Size(this.lbResults.Width, lbresults_height); 
      this.lbResults.Invalidate(); 
      Console.WriteLine("Listbox Height: " + lbResults.Height.ToString()); 
     } 
     else if(!this.lbResults.Visible) 
     { 
      this.ResizeControl(this.Width, this.txtSearch.Height); 
} 

출력에 의해 생성 된 출력 4-lbresultlbresults 세트의 높이의 무효화 이후 :

1 
1 
15 

목록 상자 높이 : 4

4로 설정해야하는 이유를 찾을 수 없습니다 ...

도와주세요.

+0

"ResizeControl"문이란 무엇입니까? 그것은 당신이 스스로 정의한 것입니까? 뭔가 재설정 중입니까? 이 WinForms 또는 WPF입니까? N. – n4m16

+0

@ 닉 나는 나 자신을 정의했다 – WillemT

+0

@nick 내 대답을 보지 않습니까? 이 질문을 할 필요가 없습니다. 이 동작은 IntegralHeight 속성의 일반적인 출력입니다. – varocarbas

답변

0

IntegralHeight이 true (MSDN article)로 설정되어 있기 때문에 설명하는 동작이 발생할 가능성이 높습니다. 이 기능을 나쁜 - 투 -이 아님을 염두에두고 한편

this.lbResults.IntegralHeight = false; 

, 곰 : 당신은 당신이 inputing 정확히 같은 값 높이로 얻을 수있는 ListBox을 원하는 경우에, 다만이 옵션을 비활성화 . 이 옵션을 사용하면 C#에서 입력 한 높이 값을 제안으로 받아서 대상에 맞게 조정합니다. ListBox의 최종 높이는 각 항목의 높이 (실제 높이, 즉 ItemHeight + 항목 간 지연).

+0

하지만 itemheight = 13 입니다. 첫 번째 항목은 표시되지 않습니다. 15/13 = 1.xxx = 1이기 때문에 – WillemT

+0

@user214623 아니요. 실제 높이 (보고있는 높이)입니다 (항목 높이보다 약간 큽니다). 내가하는 말을 확인하기 위해 직접 테스트를 해보십시오. 내가 제안한 것을 수행하면이 문제를 보지 않게 될 것입니다. IntegralHeight를 활성화하고 간단한 예제로 일부 계산을 수행하면 고려해야 할 높이가 itemheight + 1.2 (기본 글꼴 크기) 부근임을 알 수 있습니다. – varocarbas

+0

나는 그것을 말해야한다 : D 당신은 절대적으로 놀라 우다 : D – WillemT

관련 문제