1

type の項目で満たされた ComboBox (より正確には ToolStripCombobox) がありますKeyValuePair<Int32, FontFamily>。DrawItem イベントを使用して、項目を手動でペイントすることができました。したがって、すべてのアイテムは、対応する KeyValuePair の FontFamily で描画されます。これは DropDownList では問題なく機能しますが、リストからアイテムを選択してリストを閉じると、ComboBox 内のテキストは "[21, [FontFamily: Name=Arial]]" のようになります。 SelectedItem.ToString()。

この問題を解決する方法はありますか?

カスタム DrawItem メソッドのコードは次のとおりです。

private void fontComboBoxDrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            if ((e.State & DrawItemState.Focus) != 0)
            {
                e.DrawFocusRectangle();
            }
            Brush objBrush = null;

            var itemToDraw = this.fontComboBox.Items[e.Index];

                KeyValuePair<Int32, FontFamily> windowsFontItem = (KeyValuePair<Int32, FontFamily>)itemToDraw;
                objBrush = new SolidBrush(e.ForeColor);
                e.Graphics.DrawString(windowsFontItem.Value.Name, new Font(windowsFontItem.Value, e.Font.Size), objBrush, e.Bounds);
            if (objBrush != null)
            {
                objBrush.Dispose();
            }
            objBrush = null;
        }

アップデート:

ComboBox の DropDownStyle をComboBoxStyle.DropDownList

しかし、私はむしろ を使用ComboBoxStyle.DropDownしたいので、テキストを編集してフォントを検索できます。

4

0 に答える 0