J'essaie de changer la couleur d'arrière-plan de certaines lignes dans un ListBox
. J'ai deux listes que l'on a des noms et est affiché dans un ListBox
. La deuxième liste a des valeurs similaires à la première List
. Lorsque vous cliquez sur un bouton, je veux rechercher le ListBox
et le second List
, et changer la couleur du ListBox
pour les valeurs qui apparaissent dans le List
. Ma recherche dans le ListBox
est la suivante:C#: modification de la couleur de la ligne de liste?
for (int i = 0; i < listBox1.Items.Count; i++)
{
for (int j = 0; j < students.Count; j++)
{
if (listBox1.Items[i].ToString().Contains(students[j].ToString()))
{
}
}
}
Mais je ne sais pas quelle méthode utiliser afin de modifier l'apparence d'une ligne ListBox
. Quelqu'un peut-il m'aider?
** EDIT: **
HI j'ai écrit mon code comme suit:
private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
Graphics g = e.Graphics;
Brush myBrush = Brushes.Black;
Brush myBrush2 = Brushes.Red;
g.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
for (int i = 0; i < listBox1.Items.Count; i++)
{
for (int j = 0; j < existingStudents.Count; j++)
{
if (listBox1.Items[i].ToString().Contains(existingStudents[j]))
{
e.Graphics.DrawString(listBox1.Items[i].ToString(),
e.Font, myBrush2, e.Bounds, StringFormat.GenericDefault);
}
}
}
e.DrawFocusRectangle();
}
Maintenant, il tire mon List
dans le ListBox
, mais quand je clique sur le bouton d'abord, il montre en rouge seulement les étudiants qui sont dans le List
et quand je clique sur le ListBox
il dessine tous les éléments. Je veux qu'il montre tous les éléments, et quand je clique sur le bouton il montrera tous les éléments et l'élément trouvé dans le List
en rouge. Où est mon erreur?
Dessinez vous-même en utilisant OwnerDraw: http://www.c-sharpcorner.com/UploadFile/sahuja/OwnerDrawListBox11212005014826AM/OwnerDrawListBox.aspx –
double possible de http://stackoverflow.com/questions/1243870/changing- selected-itms-color-in-a-listbox –
Après votre mise à jour: apparemment, vous n'obtenez pas ce que les réponses précédentes vous ont montré. La méthode DrawItem _ retire un item_, pas plusieurs éléments. Vous aurez besoin de gérer l'élément _each au besoin, et ** pas ** d'utiliser une boucle for pour traiter tous les éléments. Jetez un oeil à la réponse de Thomas Levesque ou Justin pour de bons exemples. –