各行の(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();
}
}
itemはPointFであるオブジェクトであり、itemがlistBoxFeatureのメンバーと等しくなるたびに、それらを赤で強調表示する必要があります。
2つの問題があります:
I)methos.Equalsがif-conditionで正しく機能しないため、pointFアイテムがlistBoxFeatureのメンバーと等しいかどうかを確認します===>その結果、listBoxFeatureに何も表示されません
II)コードを実行しても、次のようなエラーメッセージが表示されます。
第2版:
NikolaD-Nickのアドバイスに従いましたが、うまくいきました!!!。しかし、解決すべき小さな部分があり、lsBoxFeatureの各行のテキスト(PointF座標)が表示されません。
これが今の様子です:
出力は次のようになります。
行のtexをlsBoxFeatureに戻すにはどうすればよいですか?