2011-02-24 2 views
0

Windows Form에 ComboBox가 있으며 항목을 수동으로 그립니다. 각 항목은 그림과 텍스트로 구성되어 있으므로 항목의 높이는 34 픽셀입니다.ComboBox DropDownList 및 그림과 텍스트의 항목

사용자 입력을 사용하려면 ComboBox의 DropDownStyle을 DropDownList로 설정하고 싶습니다. 그러나 일부 항목을 선택하면 그림과 텍스트가 표시되므로 변형됩니다. 그리고 사용자가 일부 항목을 선택하면 텍스트 만 표시하려고합니다.

protected override void OnDrawItem(DrawItemEventArgs e) 
     { 

      e.DrawBackground(); 

      if (e.Index > -1) 
      { 

       Piece item = this.Items[e.Index] as Piece; 


       e.Graphics.FillRectangle(Brushes.Gray, new Rectangle(e.Bounds.Left + 6, e.Bounds.Top + 6, 22, 22)); 

       e.Graphics.DrawImage(item.Image, new Rectangle(e.Bounds.Left + 7, e.Bounds.Top + 7, 20, 20)); 

       e.Graphics.DrawString(item.Title, e.Font, 
        new SolidBrush(e.ForeColor), e.Bounds.Left + 34, e.Bounds.Top + 10); 

      } 

      e.DrawFocusRectangle(); 

     } 

감사

답변

2

1)는 드롭 다운의 DropDownStyle을 의미합니까? 이것은 사용자 입력을 가능하게하는 설정입니다.

2) '변형 된'의미는 무엇입니까? 그리고 어디에서 볼 수 있습니까?


편집 :이의 OnDrawItem 호출이 셋톱 박스를 렌더링하는 경우 - e.State가 ComboBoxEdit 비트 플래그 세트가 있습니다. 이것을 다르게 렌더링하는지 확인하십시오.

if((e.State & DrawItemState.ComboBoxEdit) != DrawItemState.ComboBoxEdit) 
{ 
    // Do drawing logic just for the top edit part 
} 
else 
{ 
    // Draw logic here for rendering in the drop-down 
} 
+0

1)는 I = DropDownStyle ComboBoxStyle.DropDownList 2) http://www.imagebam.com/image/26d4f1121064349이 OK 인 설정 의미 I 아이템을 그린다. http://www.imagebam.com/image/58139c121064355이 항목 중 일부를 선택하면 표시됩니다. – austinem

+0

이미지가 손상되지 않았으므로 잘립니다. 15 ~ 20 개의 컨트롤에서 32 픽셀 높이를 그리는 중입니다. 이것을 위해 다른 논리를 사용하려면 e.State 키를 누르십시오 - 업데이트 된 게시물을 참조하십시오. –