2011-02-24 39 views
0

我在WindowsForms中有一個組合框,並且我手動繪製了項目。每個項目由圖片和文字組成,因此項目爲34 px高度。組合框DropDownList和圖片和文字中的項目

我想將DropDownStyle的ComboBox設置爲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)我的意思是設定DropDownStyle = ComboBoxStyle.DropDownList 2)http://www.imagebam.com/image/26d4f1121064349這是確定,我繪製項目。 http://www.imagebam.com/image/58139c121064355我看到這個,當我選擇一些項目 – austinem 2011-02-25 14:42:34

+0

你的圖像沒有損壞,他們被剪輯。你只用15-20的控制就可以畫出32像素的高畫質。要有不同的繪製邏輯,請關閉e.State - 查看我更新的帖子。 – 2011-02-25 19:12:28

相關問題