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 に答える