0

我在组合框中创建了一个字体列表。我将它的 DrawMode 设置为 OwnerDrawFixed 并且 DrawItem 方法很简单:

void cmbFonts_DrawItem(object sender, DrawItemEventArgs e)
{
    if (e.Index < 0) return;
    e.DrawBackground();

    Font newFont =
        new Font(cmbFonts.Items[e.Index].ToString(), this.DefaultFontSize);
    e.Graphics.DrawString(cmbFonts.Items[e.Index].ToString(),
                          newFont,
                          new SolidBrush(Color.Black),
                          new Rectangle(e.Bounds.Location, e.Bounds.Size));
    e.DrawFocusRectangle();
}

一般来说,它可以正常工作。问题出现在鼠标滚动上。然后一些项目看起来像随机图形,直到它们被聚焦。有人知道问题的解决方案吗?

4

1 回答 1

1

无论索引如何,始终调用 e.DrawBackground()。使固定:

void cmbFonts_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    if (e.Index >= 0) {
       // etc...
    }
}
于 2012-04-18T14:01:48.173 回答