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
したいので、テキストを編集してフォントを検索できます。