コンボボックスにテンプレート名を入力するシナリオがあります。テンプレートの中にはデフォルトテンプレートがあります。コンボボックスに値を入力すると、デフォルトのテンプレート名が強調表示されます(その結果、アイテムのうちどれがデフォルトになっているかが分かります)。それは可能ですか?はいの場合はどうですか?私はC#2.0でWindowsフォームを使用しています。コンボボックス内の特定の項目の強調表示
2
A
答えて
8
項目を強調表示する方法に少し依存します。既定のアイテムのテキストを太字で表示する場合は、このようにすることができます(これを行うには、ComboBoxのDrawMode
をOwnerDrawFixed
に設定し、DrawItemイベントをイベントハンドラに接続する必要があります) :
私はこのように定義され、テンプレートのオブジェクトとのコンボボックスを埋めています
private class Template
{
public string Name { get; set; }
public bool IsDefault { get; set; }
public override string ToString()
{
return this.Name;
}
}
...とDrawItemイベントは次のように実装されている:あなたが軌道に乗る必要があります
private void ComboBox_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
}
Template template = comboBox1.Items[e.Index] as Template;
if (template != null)
{
Font font = comboBox1.Font;
Brush backgroundColor;
Brush textColor;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
backgroundColor = SystemBrushes.Highlight;
textColor = SystemBrushes.HighlightText;
}
else
{
backgroundColor = SystemBrushes.Window;
textColor = SystemBrushes.WindowText;
}
if (template.IsDefault)
{
font = new Font(font, FontStyle.Bold);
}
e.Graphics.FillRectangle(backgroundColor, e.Bounds);
e.Graphics.DrawString(template.Name, font, textColor, e.Bounds);
}
}
正しい方向、私希望。
0
コンボボックスのDrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariableを設定します。そして、これを達成するために、 Combobox_MeasureItem()とCombobox_DrawItem()メソッドをオーバーライドします。
関連する問題
- 1. WPF:ツリービュー項目を強調表示コンテキストMeuを表示
- 2. メニューの現在の項目を強調表示します
- 3. プログラムでリストビューの項目を強調表示する方法は?
- 4. リストで項目を強調表示するときのパフォーマンス
- 5. <body id>と2つのナビゲーション項目を強調表示
- 6. jquery treeview選択した項目を強調表示
- 7. コンボボックス表示されない項目
- 8. 選択時にグリッド表示項目を強調表示する方法は?
- 9. jQueryを使用してnavメニューの現在のページ項目を強調表示
- 10. Springフォームのselectタグで複数の項目が強調表示されない
- 11. 配列内の特定の項目の数を表示する方法は?
- 12. jtextpaneから特定の行を強調表示
- 13. CSS/JavaScriptで特定の単語を強調表示する
- 14. DataGridViewで特定の行を強調表示する方法
- 15. EclipseのEmacsキーバインディングで選択項目を強調表示する方法は?
- 16. 2つのメニューでjQueryを使ってメニュー項目を強調表示
- 17. コンボボックス(C#)のリスト内容の特定のフィールドを表示する
- 18. WPF:コンボボックスのドロップダウンでテキストが強調表示されます。
- 19. リスト内の特定の項目にスクロールし、リスト内の次の特定の項目にスクロールします。
- 20. Ext jsコンボボックスがメニュー内のすべての項目を表示しない
- 21. ホバー上の他のリスト内の対応するリスト項目を強調表示します
- 22. コンボボックスが表示されない項目が表示される
- 23. jQueryの子供(他のUL)を強調表示せずにリスト項目をハイライト表示
- 24. コンボボックスに太字の項目を表示する
- 25. コンボボックス、複数の項目を1行に表示
- 26. パネルエリアの強調表示
- 27. Firefox/Internet Explorerで選択タグ内の項目を選択/強調表示する動作
- 28. Django ManyToManyFieldは選択した項目を強調表示しません
- 29. フォントと色の表示項目のうち、どの項目が強調表示を制御していますか?
- 30. ReSharper 6の構文をオフにする特定のファイルタイプの強調表示
あなたのソリューションを実装しました。ありがとう、百万フレドリック!このコードは私には魔法のようでした:) –