如何在FastObjectListView中选择行?

我真的很想尝试如何在FastObjectListView(C#,Windows窗体)中选择行。


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


方法:


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中的属性,但不要在视觉上更改任何项目。


如何选择我的行?


莫回无
浏览 224回答 2
2回答

皈依舞

您已经有了正确的答案:gvRaces.SelectObject(obj , true);这也将起作用(并且可能更多地是您想要的):gvRaces.SelectedObject = obj;Rev1.0的观点仍然有效-确保obj实际上是控件中的一个对象。该控件用于Equals()确定两个对象是否相等。另外,请确保olv.HideSelection为false。这是一个非常烦人的MS提供的属性,当ListView它没有焦点时会关闭选择。它使它看上去似乎SelectObject()在实际上没有工作时就没有工作。

烙印99

简而言之:您做错了。使用ObjectListView或任何相关控件时,通常不要直接触摸Items集合或ListViewItems。您应该阅读该教程,尤其是“心理变速”和“必须学习”。当心ListViewItems。您无需将ListViewItems添加到ObjectListView。如果您发现自己在Items集合中添加了东西,创建ListViewItems或在任何东西中添加了子项目,那么您需要停止–您被迷住了。ObjectListView为您完成所有工作。它拥有ListViewItems并将根据需要销毁并重新创建它们。您的工作是告诉ObjectListView您希望ListViewItems包含哪些信息,然后为其提供要显示的对象列表。抵制添加,编辑,删除或以其他方式与ListViewItems混淆的诱惑-这将无法工作。
打开App,查看更多内容
随时随地看视频慕课网APP