如何以编程方式selectListView中的项目?
我试图以编程方式selectListView中的第一个项目,但它似乎没有被选中。 我正在使用下面的代码:
if (listView1.Items.Count > 0) listView1.Items[0].Selected = true;
其实我以前有这个问题,但我不记得我是如何解决它的!
最有可能的是,该项目正在被选中,你不能说,因为一个不同的控制有重点。 有几种不同的方法可以解决这个问题,这取决于应用程序的devise。
-
简单的解决scheme是当您的表单显示时,首先将焦点设置到
ListView
。 用户通常通过点击来将焦点设置到控件上。 但是,您也可以指定哪些控件以编程方式获取焦点。 这样做的一种方法是将控件的选项卡索引设置为0(最低值表示将具有初始焦点的控件)。 第二种可能性是在表单的Load
事件中使用以下代码行,或者在设置Selected
属性之后立即使用:myListView.Select();
这个解决scheme的问题是,当用户将焦点设置到窗体上的其他控件(如文本框或button)时,选定的项目将不再突出显示。
-
要解决这个问题,你需要将
ListView
控件的HideSelection
属性设置为False。 这将导致选定的项目保持突出显示 ,即使控件失去焦点。当控件具有焦点时,所选项目的背景将使用系统高亮颜色进行绘制。 当控件没有焦点时,所选项目的背景将被绘制为用于灰色(或禁用)文本的系统颜色。
您可以在devise时或通过代码设置此属性:
myListView.HideSelection = false;
if (listView1.Items.Count > 0) { listView1.Items[0].Selected = true; listView1.Select(); }
列表项不显示选中,除非控件具有焦点(或者您将HideSelection
属性设置为false)
我认为问题和解决scheme是由科迪灰色描述! 我还有一个附注。
请检查指定的listview项目(和控件!)的焦点。 我可以用下面几行代码来设置焦点和select:
this.listView1.Items[1].Selected = true; this.listView1.Items[1].Focused = true;
但是重点控制是一个条件!
int i=99;//is what row you want to select and focus listViewRamos.FocusedItem = listViewRamos.Items[0]; listViewRamos.Items[i].Selected = true; listViewRamos.Select(); listViewRamos.EnsureVisible(i);//This is the trick
if (listView1.Items.Count > 0) { listView1.FocusedItem = listView1.Items[0]; listView1.Items[0].Selected = true; listView1.Select(); }
ListViewItem.IsSelected = true; ListViewItem.Focus();