J'ai une zone de liste qui affiche des positions de (X, Y) dans chaque ligne.Mettez en surbrillance plusieurs éléments/lignes dans listBox
D'une certaine manière, l'utilisateur peut entrer quelques paires (X, Y) dans une zone de texte et appuyer sur le bouton. Maintenant, ce que je veux faire est: chaque fois que l'utilisateur a entré 3 ou 4 paires (X, Y), mon algorithme trouve les paires appariées et les paires correspondantes doivent être mises en évidence (disons avec rose/rouge/n'importe quelle couleur) en même temps tous ensemble dans la zone de liste.
Comment est-ce que je pourrais mettre en évidence ces paires (mêmes index) avec mes couleurs désirées?
1ère édition:
Comme NikolaD - Nick guidé, je changé ma DrawMode à OwnerDrawVariable et méthode lsBoxFeature_DrawItem, j'ai ajouté le code suivant:
private void lsBoxFeature_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawFocusRectangle();
Bitmap bmp = new Bitmap(e.Bounds.Width, e.Bounds.Height);
Graphics g = Graphics.FromImage(bmp);
foreach (var item in globalDataForAllMatchedFrames[globalDataForAllMatchedFrames.Count - 1].featureNumber)
{
if (lsBoxFeature.Items[e.Index].Equals(item))//your method that determines should current item be highlighted
{
g.Clear(Color.Red);
}
else
{
g.Clear(lsBoxFeature.BackColor);
}
g.DrawString(lsBoxFeature.Items[e.Index].ToString(), lsBoxFeature.Font, new SolidBrush(lsBoxFeature.ForeColor), e.Bounds);
e.Graphics.DrawImage(bmp, e.Bounds);
g.Dispose();
}
}
élément est un objet qui est PointF, maintenant chaque fois que l'élément est égal à ces membres dans listBoxFeature, il devrait les mettre en évidence en rouge.
Il y a deux questions:
I), il semble Methos Equals doesnt fonctionnent correctement si condition pour vérifier si l'élément de PointF est égal aux membres listBoxFeature ===> En tant que rien de résultat est présenté dans mon listBoxFeature
II) Même quand je lance le code que je reçois un message d'erreur suivant:
2e édition:
je suivais NikolaD - Nick des conseils, et cela a fonctionné !!! Mais il y a un petit morceau à résoudre, il ne montre pas le texte (PointF coordonnées) pour chaque ligne de lsBoxFeature..
Voici à quoi il ressemble maintenant:
et voici comment la sortie est censé être:
Comment pourrais-je reprendre la tex de la ligne dans lsBoxFeature ?
Jetez un oeil à ce [ 'link'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.hittest.aspx) une fois. Peut-être que cela vous est utile. –
@Mr_Green: C'est une boîte de liste, pas une vue de liste –
oups oui vous avez raison .. avez-vous eu la solution pour ce problème? –