1

チェックされたリスト ボックスにアイテムが追加されたときに表示されるテキストを上書きしたいと考えています。現在、obj.ToString() を使用していますが、オブジェクトの ToString メソッドを変更せずにテキストを追加したいと考えています。ListBox の DrawItem イベントを処理する例を見てきましたが、それらを実装しようとすると、イベント ハンドラーが呼び出されません。Winforms デザイナーでは、DrawItem イベントのハンドラーを割り当てることができないようです。頑固なので、自分でコードを追加しただけです

        listbox1.DrawMode = DrawMode.OwnerDrawVariable;
        listbox1.DrawItem += listbox1_DrawItem;

私は不可能なことをしようとしていますか?

4

2 に答える 2

0

DonBoitnottsの回答で作業を続けました。

「GetCheckBoxState」は、状態が 2 つだけの非常に限定されたセットを使用して実装されます。

var state = GetItemChecked(e.Index) ? CheckBoxState.CheckedNormal : CheckBoxState.UncheckedNormal;

チェックボックスを縦に揃え、テキストを左揃えにしました。

var b = e.Bounds;
int checkPad = (b.Height - glyphSize.Height) / 2;
CheckBoxRenderer.DrawCheckBox(g, new Point(b.X + checkPad, b.Y + checkPad),
    new Rectangle(
        new Point(b.X + b.Height, b.Y),
        new Size(b.Width - b.Height, b.Height)),
    text, this.Font, TextFormatFlags.Left, false, state);
于 2014-11-20T16:10:29.180 に答える