将listBox.SelectedItem转换为PointF

时间:2012-05-01 19:02:20

标签: c#-4.0 types casting lambda type-conversion

我的列表框中有一个项目; 我想把它转换为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表达式来查找匹配

1 个答案:

答案 0 :(得分:1)

如何将selectedItem转换为PointF:

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

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

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

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