如何在FastObjectListView中选择行?

时间:2018-04-10 05:43:51

标签: c# winforms objectlistview

我在尝试如何在FastObjectListView(C#,Windows Forms)中选择行时真的很失心。

我在网格中有这个对象的对象和索引,但是我无法选择它! 我所做的一切 - 移动滚动到这一行,但不选择它。

方法:

idx = index of row with my object
obj = my object

gvRaces.Items[idx].Selected = true;
gvRaces.SelectObject(obj , true);
gvRaces.SelectedItem = (OLVListItem)gvRaces.Items.Find(obj.Id.ToString(), true).FirstOrDefault(); - 

对于最后一种方法,我有一个问题。方法中的关键是什么... Items.Find(key,searchAllSubitems)?

所有这些方法都会更改fastObjectListView中的属性,但不能直观地更改任何项目。

如何选择我的行?

2 个答案:

答案 0 :(得分:1)

你已经有了正确的答案:

gvRaces.SelectObject(obj , true);

这也可行(并且可能更符合您的要求):

gvRaces.SelectedObject = obj;

Rev1.0&#39> s点仍然有效 - 确保obj实际上是控件中的对象。控件使用Equals()来确定两个对象是否相等。

另外,请确保olv.HideSelectionfalse。这是一个非常烦人的MS提供的属性,当ListView没有焦点时会关闭选择。这使得它看起来好像SelectObject()实际上没有效果。

答案 1 :(得分:0)

简而言之:你做错了。使用ObjectListView或任何相关控件时,您通常不会直接触及Items集合或ListViewItems。

您应该阅读本教程,尤其是Mental gear shiftUnlearn you must

  

小心ListViewItems。您永远不需要将ListViewItems添加到ObjectListView。 如果您发现自己在Items集合中添加内容,创建ListViewItems或向任何内容添加子项,那么您需要停止 - 您被诱惑到了黑暗的一面。 ObjectListView可以帮助您完成所有工作。它拥有ListViewItems并将根据需要销毁并重新创建它们。您的工作是告诉ObjectListView您希望ListViewItems包含哪些信息,然后为其提供要显示的对象列表。

     

抵制添加,编辑,删除或以其他方式搞乱ListViewItems的诱惑 - 它不起作用。