2013-02-22 43 views
0

我寫了下面的代碼,以增加該項目的高度。一旦完成,在滾動組合框時,與正常組合框相比,它以非常高的速度移動。我該如何解決這個問題?組合框OwnerDrawFixed - 滾動速度非常快

我已經設置了抽獎方式爲DrawMode.OwnerDrawFixed;

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) 
    {   
     e.DrawBackground(); 
     System.Diagnostics.Debug.WriteLine(e.State); 
     if (e.Index < 0) 
     { 
      return; 
     }  
     SizeF stringMeasure = e.Graphics.MeasureString(this.Items[e.Index].ToString(), e.Font); 
     Rectangle rec = new Rectangle(e.Bounds.Left, e.Bounds.Top + ((e.Bounds.Height - ItemHeight)/2), e.Bounds.Width, ItemHeight); 
     e.Graphics.DrawString(this.Items[e.Index].ToString(), e.Font, new SolidBrush(this.ForeColor), rec); 
     e.DrawFocusRectangle(); 
    } 

    private void comboBox1_MeasureItem(object sender, MeasureItemEventArgs e) 
    { 
     e.ItemHeight = this.ItemHeight * 2; ; 
    } 

回答

0

只有當DrawMode設置爲OwnerDrawVariable時纔會調用MeasureItem事件。

所以,你需要更改的DrawMode到OwnerDrawVariable,或組合框的ItemHeight屬性設置爲this.ItemHeight * 2

不知道的滾動速度值,也可能僅僅是您的操作系統。我沒有注意到很大的區別 - 你沒有使用你的stringMeasure變量,所以你可以評論。

+0

它看起來像只是在我的機器出現問題。 – Maanu 2013-02-23 11:06:40