0

我的列表框中有一个项目;我想把它转换成 PointF,这样我就可以将它与 pointF 列表进行比较。

示例) var selection = listBox3.SelectedItem ; // 像“{X=18,Y=48.10001}”

PointF p1 = (PointF) 选择;

//现在,当该项目已被选择并转换为浮点数时,我想在名为 optFlowPoints 的列表中搜索并找到它,以查看该点是否存在

PointF drawPointEst=optFlowPonits.Find(p=>p.Equals(selection));

所以有两个问题:

  1. 如何将 selectedItem 转换为 PointF
  2. 如何编写我的 lambda 表达式来查找匹配项
4

1 回答 1

1

如何将 selectedItem 转换为 PointF:

我认为您可以更改填写列表的方式。你试过listBox3.Items.AddRange(temp.Cast<object>().ToArray());吗?我认为这应该可行,因为 ListBox 会为您调用 ToString。(请参阅http://msdn.microsoft.com/en-us/library/z018s5az.aspx)然后,您的 InvalidCastException 应该消失,因为您的 ListBox 现在包含 PointF 对象而不是字符串。

如何编写 lambda 表达式来查找匹配项:

PointF drawPointEst = optFlowPoints.Find(p => p == selection);

http://msdn.microsoft.com/en-us/library/system.drawing.pointf.op_equality.aspx

于 2012-05-02T22:07:33.003 回答