Kann ein ComboBox-Element in C# formatiert werden? Zum Beispiel, wie würde ich ein Element fett machen, die Farbe seines Textes ändern usw.?Ändern des Formats eines ComboBox-Elements
Antwort
Sie können dies tun, indem Sie die DrawMode-OwnerDrawFixed
Einstellung, die Sie manuell ermöglicht, um die Elemente zu ziehen mit dem DrawItem Ereignisse.
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);
}
Ja, aber mit Ihrem eigenen ComboBox mit benutzerdefinierter Zeichnungserstellung See here on MSDN
Nein, es gibt keine integrierte Eigenschaft, um es zu tun. Sie müssen Ihr eigenes Steuerelement erstellen und das Rendering überschreiben.
So alt wie dieser Beitrag ist, fand ich es als Ausgangspunkt für die Suche nützlich, aber endete mit besseren Ergebnissen mit der Methode here von @Paul gezeigt.
Hier ist der Code, den ich verwendet habe, um Elemente in einem Kombinationsfeld fett erscheinen zu lassen, finde ich, dass die für diese Frage markierte Antwort merkwürdiges Verhalten hat - wenn Sie den Mauszeiger über ein Element bewegen, wird es etwas mutiger und bleibt so wenn es neu gezeichnet wird. Dieser Code führt ein natürlicheres Aussehen:
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();
}
}
einfach auf die Antwort von Dan geliefert hinzuzufügen, vergessen Sie nicht, dass, wenn Sie die Liste auf eine Datenquelle gebunden, anstatt nur eine ComboBox mit einfachen Saiten Sie können den Eintrag nicht neu zeichnen, indem Sie combo.Items[e.Index].ToString()
verwenden.
Wenn Sie zum Beispiel die ComboBox an eine DataTable gebunden haben und versuchen, den Code in Dans Antwort zu verwenden, erhalten Sie am Ende eine ComboBox mit System.Data.DataRowView
, da jedes Element in der Liste keine ist Zeichenfolge, es ist ein DataRowView.
Der Code in diesem Fall so etwas wie die folgenden sein würde:
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();
}
}
Wo "DisplayMember"
Namen des Feldes in der Liste angezeigt werden (festgelegt in der ComboBox1.DisplayMember
Eigenschaft).
- 1. Ändern des Formats eines vorhandenen Felds ohne Löschen, Neuerstellung
- 2. Ändern des JSON-Formats für den Federdatenrest
- 3. Inverse Funktion des Formats
- 4. Erstellen eines bestimmten JSON-Formats
- 5. Ändern des Formats einiger Achsbezeichnungen in ggplot2 gemäß Bedingung
- 6. Beschreibender Text des Zeichenfolge-Formats
- 7. Erstellen Sie Uri des Formats X: Y
- 8. Verwenden eines benutzerdefinierten Formats mit Bindungsquelle?
- 9. Konvertieren des DateTime-Formats mit dem Rasierer
- 10. Äquivalent des VB-Formats in C#
- 11. Promise Fehler wegen des schlechten Formats
- 12. Verwendung des Clang-Formats in CLion
- 13. Einstellen des Formats von PL/SQL-Ausgabe
- 14. sscanf 'Umwandlung fehlt am Ende des Formats'
- 15. Konvertieren eines Formats in Datetime-Format
- 16. Ändern des Namens eines Knopfes
- 17. Ändern des rootViewControllers eines UIWindow
- 18. Ändern des Stils eines NSSearchField
- 19. Ändern des Spaltennamens eines Schienenobjekts
- 20. Konvertieren des DateTime-Formats von Excel in DateTime Pandas
- 21. Ungültige Zeit bei Verwendung des benutzerdefinierten Formats momentJS
- 22. Angeben eines benutzerdefinierten DateTime-Formats beim Serialisieren mit Json.Net
- 23. Ändern des Include-Formats von #include "{path} /file.h" zu #include "file.h" um den Fehler zu beheben?
- 24. Ändern des Formats einer Spalte von Datenrahmen von Str zu Datum in spezifischem Format
- 25. Ändern des Formats von einem mySQL-Datetime-Format zu einem anderen Typ in Ruby?
- 26. Ist mein RSPET-Test wegen des mysql-Timestamp-Formats fehlerhaft?
- 27. Ändern des Git-Kommentars eines Push-Commits
- 28. Ändern eines Variablennamens innerhalb des Codes
- 29. Ändern des Werts eines Makros zur Laufzeit
- 30. Ändern des aktuellen Verzeichnisses eines FileSystemObject