コンボボックスアイテムを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. ソナタのデフォルトのフォーマットを変更する
- 2. アレイを別のフォーマットに変更する
- 3. システム日付のフォーマットを変更する
- 4. フォーマットを変更するsorl thumbnail
- 5. コンテンツを変更する<Texture2D>フォーマット
- 6. mysqlの変更日付フォーマット
- 7. 各コンボボックスアイテムの値を保存する
- 8. コンボボックスアイテムをインプレイスでどのように更新しますか?
- 9. WPFコンボボックスアイテムをテキストボックスにドラッグアンドドロップする
- 10. コンボボックスアイテムを無効にする方法は?
- 11. コンボボックスアイテムへのバインディングホバーイベントの問題
- 12. フォーマット関数vba日付の変更
- 13. PHPの変更アレイ構造/フォーマット
- 14. jquery FullCalendar:weekviewの曜日タイトルのフォーマットを変更する
- 15. Liferay:ウェブコンテンツ内のドキュメントリンクのURLフォーマットを変更する(ジャーナル記事)
- 16. JavaCVでウェブカメラのフォーマットを変更するには?
- 17. Tornadoのロギング日時フォーマットを変更するには?
- 18. SASテーブル内の単一セルにフォーマットを変更する方法
- 19. フォーマットに応じてセルの値を変更する
- 20. 公開バージョンのフォーマットを変更するには
- 21. qmakeビルド出力をフォーマット/変更する方法
- 22. レール上でjsonフォーマットを変更する方法
- 23. 画像をあるフォーマットから別のフォーマットに変換する
- 24. Hiveテーブルの動的パーティションのフォーマットを変更できますか?
- 25. Resharperのフォーマットが行末を変更しています
- 26. texttable drawはコンテンツのフォーマットを変更します
- 27. フォーマットが可変のときにDoubleをフォーマットする方法は?
- 28. @ VB.NETのコンボボックスアイテムにツールチップを設定するには?
- 29. mysqlのテーブルの最後の行のフォーマットを変更したい
- 30. drupal7コメントの$のフォーマットを変更しました