コンボボックスアイテムをC#でフォーマットすることはできますか?たとえば、アイテムを太字にしたり、テキストの色を変更したりするにはどうすればよいですか?コンボボックスアイテムのフォーマットを変更する
10
A
答えて
7
を使用して独自のコンボボックスを作成してあなたが手動DrawItemイベントを使用してアイテムを描画することを可能にするOwnerDrawFixed
にDrawModeを設定することによってこれを行うことができます。
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) {
Font font = comboBox1.Font;
Brush brush = Brushes.Black;
string text = comboBox1.Items[e.Index];
if (you want bold)
font = new Font(font, FontStyle.Bold);
if (you want green)
brush = Brushes.Green;
e.Graphics.DrawString(text, font, brush, e.Bounds);
}
0
はい、しかしカスタム描画 See here on MSDN
0
いいえ、それを行うための組み込みプロパティはありません。独自のコントロールを作成し、レンダリングをオーバーライドする必要があります。
11
このポストと同じくらい古くから、私はそれを検索の出発点として有用だが、@Paulで示された方法hereでより良い結果を得た。
コンボボックス内のアイテムを条件付きで太字で表示するコードは次のとおりです。この質問に正しい答えが表示されるのは、奇妙な動作をしていることです。アイテム上にカーソルを合わせると、それが再描画されている場合。より自然な表情でこのコードの結果:
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
ComboBox combo = ((ComboBox)sender);
using (SolidBrush brush = new SolidBrush(e.ForeColor))
{
Font font = e.Font;
if (/*Condition Specifying That Text Must Be Bold*/)
font = new System.Drawing.Font(font, FontStyle.Bold);
e.DrawBackground();
e.Graphics.DrawString(combo.Items[e.Index].ToString(), font, brush, e.Bounds);
e.DrawFocusRectangle();
}
}
2
ただ、ダンから供給された答えに追加する、というだけのプレーンな文字列を含むコンボボックスを持つよりも、あなたがデータソースにリストをバインドしている場合ことを忘れないでくださいcombo.Items[e.Index].ToString()
を使用してエントリを再描画することはできません。
たとえば、ComboBoxをDataTableにバインドして、Danの答えでコードを使用しようとすると、リストの各項目は、System.Data.DataRowView
を含むコンボボックスで終了します。それはDataRowViewです。
この場合のコードは次のようになります。"DisplayMember"
は(ComboBox1.DisplayMember
プロパティで設定)リストに表示されるフィールドの名前です
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
return;
ComboBox combo = ((ComboBox)sender);
using (SolidBrush brush = new SolidBrush(e.ForeColor))
{
Font font = e.Font;
DataRowView item = (DataRowView)combo.Items[e.Index];
if (/*Condition Specifying That Text Must Be Bold*/) {
font = new System.Drawing.Font(font, FontStyle.Bold);
}
else {
font = new System.Drawing.Font(font, FontStyle.Regular);
}
e.DrawBackground();
e.Graphics.DrawString(item.Row.Field<String>("DisplayMember"), font, brush, e.Bounds);
e.DrawFocusRectangle();
}
}
。
関連する問題
- 1. コンボボックスアイテムのハイライトカラーを変更するWPF
- 2. ソナタのデフォルトのフォーマットを変更する
- 3. アレイを別のフォーマットに変更する
- 4. 時計のフォーマットを変更するチェックボックス
- 5. モバイル用ビデオのフォーマットを変更する
- 6. システム日付のフォーマットを変更する
- 7. S3Client.getURLのフォーマットを変更するには
- 8. phpBBのURLフォーマットを変更する
- 9. Wagtail - リッチテキストエディタでイメージタグ/フォーマットを変更する
- 10. .htaccessでURLフォーマットを変更する
- 11. JSを変更する文字列フォーマット
- 12. 日時フォーマットを変更するには?
- 13. コンテンツを変更する<Texture2D>フォーマット
- 14. フォーマットを変更するsorl thumbnail
- 15. 各コンボボックスアイテムの値を保存する
- 16. mysqlの変更日付フォーマット
- 17. コンボボックスアイテムをインプレイスでどのように更新しますか?
- 18. TextWrappingプロパティをコンボボックスアイテムに設定する(wpf)
- 19. コンボボックスアイテムを無効にする方法は?
- 20. WPFコンボボックスアイテムをテキストボックスにドラッグアンドドロップする
- 21. Windowsフォームアプリケーションのコンボボックスアイテムのグループ化
- 22. コンボボックスアイテムへのバインディングホバーイベントの問題
- 23. 文字のフォーマットを変更Shinyのアウトプット
- 24. 変更TDBChart月フォーマット表示
- 25. 右から左へのコンボボックスアイテム
- 26. jQueryテキストボックスの日付フォーマットを変更
- 27. フォーマットを変更せずにNSStringをNSDateに変換する
- 28. Thu 1 DecフォーマットをPHPの日付フォーマットに変更するには
- 29. WordPressにインポートするXMLのフォーマットを変更するには?
- 30. 長いフォーマットから長いフォーマットへのデータの変更 - 複数の変数