我有一个列表框,显示每行中(X,Y)的某些位置。在列表框中突出显示多个项目/行
不知何故,用户可以在文本框中输入几个(X,Y)对,然后按下按钮。
现在我想要做的是:每当用户输入3或4(X,Y)对时,我的算法找到匹配的对,并且那些对应的对应该被突出显示(可以用粉红色/红色/任何颜色)同时全部在列表框中。
我怎么能用我想要的颜色来突出显示那些对(相同的索引)?
第一版:
作为NikolaD - Nick引导,我改变DrawMode到OwnerDrawVariable和lsBoxFeature_DrawItem方法,我添加以下代码:
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();
}
}
项是一个对象,其是一个PointF,现在每当该项目与listBoxFeature中的成员相等时,它应该用红色突出显示它们。
这里有两个问题:
I)似乎methos .Equals正确犯规中,如果条件检查工作,如果该项目的PointF在listBoxFeature ===>如图所示的结果没什么等于成员在我listBoxFeature
II),甚至当我运行代码我得到一个错误信息如下:
第2版:
我也跟着NikolaD - Nick建议,它的工作!但有一小片来解决,它不显示在lsBoxFeature每一行文字(的PointF坐标)。
这是现在的样子:
,这里是输出是如何应该是:
我怎么能走行的TEX早在lsBoxFeature ?
看看这个['link'](http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.hittest.aspx)一次。也许这对你有帮助。 –
@Mr_Green:它是一个列表框,而不是列表视图 –
oops是的,你是对的..你有解决这个问题的方法吗? –