我有一个列表框,显示每行中 (X,Y) 的一些位置。
不知何故,用户可以在文本框中输入几个 (X,Y) 对,然后按下按钮。
现在我想要做的是:每次用户输入 3 或 4 个(X,Y)对时,我的算法都会找到匹配的对,并且这些对应的对应该同时突出显示(比如说粉红色/红色/任何颜色)一起在列表框中。
如何用我想要的颜色突出显示这些对(相同的索引)?
第 1 版:
在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();
}
}
item 是一个 PointF 对象,现在每次 item 等于 listBoxFeature 中的那些成员时,它应该以红色突出显示它们。
有两个问题:
I)似乎methos .Equals在if条件下无法正常工作以检查pointF项目是否等于listBoxFeature中的成员===>因此我的listBoxFeature中没有显示任何内容
II)即使当我运行代码时,我也会收到如下错误消息:
第 2 版:
我遵循NikolaD - Nick的建议,它奏效了!!!。但是有一小部分需要解决,它没有显示 lsBoxFeature 中每一行的文本(PointF 坐标)。
这是它现在的样子:
这是输出应该是这样的:
我怎样才能在 lsBoxFeature 中取回该行的 tex?