Est-il possible de formater un élément ComboBox en C#? Par exemple, comment rendre un élément en gras, changer la couleur de son texte, etc.?Modification du format d'un élément ComboBox
Répondre
Vous pouvez le faire en réglant le DrawMode-OwnerDrawFixed
qui vous permet de dessiner manuellement les éléments à l'aide de l'événement DrawItem.
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);
}
Oui, mais avec la création de votre propre ComboBox avec dessin personnalisé See here on MSDN
Non, il n'y a pas de propriété intégrée pour le faire. Vous devrez construire votre propre contrôle et remplacer le rendu.
Aussi ancien que ce billet, je l'ai trouvé utile comme point de départ pour chercher mais a fini par avoir de meilleurs résultats en utilisant la méthode montrée here par @Paul.
Voici le code que j'ai utilisé pour faire apparaître de façon conditionnelle les éléments d'une liste déroulante en gras, je trouve que la réponse correcte pour cette question a un comportement étrange - lorsque vous survolez un élément devient plus audacieux et reste comme s'il est redessiné. Ce code entraîne dans un look plus naturel:
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();
}
}
Juste pour ajouter à la réponse fournie par Dan, ne pas oublier que si vous avez lié la liste à une source de données, plutôt que d'avoir simplement un ComboBox avec des chaînes simples , vous ne serez pas en mesure de redessiner l'entrée en utilisant combo.Items[e.Index].ToString()
. Si par exemple, vous avez lié la zone de liste déroulante à un DataTable, et essayez d'utiliser le code dans la réponse de Dan, vous allez vous retrouver avec une zone de liste déroulante contenant System.Data.DataRowView
, car chaque élément de la liste n'est pas un chaîne, c'est une DataRowView.
Le code dans ce cas serait quelque chose comme ce qui suit:
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();
}
}
Où "DisplayMember"
est le nom du champ à afficher dans la liste (définie dans la propriété ComboBox1.DisplayMember
).
- 1. Modification du comportement de ComboBox modifiable
- 2. WPF ComboBox élément sélectionné
- 3. Modification du format d'une chaîne de date
- 4. ComboBox avec élément vide?
- 5. ComboBox/ListBox élément sélectionné
- 6. Modification du format de chaîne du WPF DatePicker
- 7. Modification du format du sélecteur de date de l'interface utilisateur
- 8. ComboBox Élément sélectionné dans WPF
- 9. Liaison Combobox et élément vide
- 10. Combobox lindrable - élément/index sélectionné
- 11. Modification des éléments ComboBox Scala Swing
- 12. WPF ComboBox SelectedItem - modification à la valeur précédente
- 13. Modification du format d'impression de date par défaut en python
- 14. Modification du format d'affichage des erreurs dans Rails ActionView Helpers
- 15. Reliure WPF ComboBox à un élément
- 16. Modification de ComboBox SelectedIndex sans déclencher d'événement en C#
- 17. Modification d'innerHTML d'un élément créé avec innerHTML
- 18. Spark ComboBox - problème avec l'affichage du texte pour un nouvel élément?
- 19. Prévention de la sélection du clavier comboBox
- 20. Modification de la position ou du format du symbole pas toujours précis?
- 21. WPF ComboBoxItem Modification d'arrière-plan lorsque ComboBox SelectedIndex est -1
- 22. Modification de la hauteur d'un télérig: contrôle combobox
- 23. Annulation d'un événement de modification dans HTML ComboBox
- 24. valeur Accès/modification jquery attribut d'un élément
- 25. Temps Excel VBA Format en décimal avec Combobox
- 26. Combobox masqué lors du redimensionnement
- 27. WPF Binding Collection Pour ComboBox et la sélection d'un élément
- 28. ActiveScaffold - modification du nom par défaut de l'objet associé
- 29. Modification/modification du sélecteur affecté à UINavigationBar.backItem
- 30. Modification du nom du schéma