如何以编程方式selectListView中的项目?

我试图以编程方式selectListView中的第一个项目,但它似乎没有被选中。 我正在使用下面的代码:

if (listView1.Items.Count > 0) listView1.Items[0].Selected = true; 

其实我以前有这个问题,但我不记得我是如何解决它的!

最有可能的是,该项目正在被选中,你不能说,因为一个不同的控制有重点。 有几种不同的方法可以解决这个问题,这取决于应用程序的devise。

  1. 简单的解决scheme是当您的表单显示时,首先将焦点设置到ListView 。 用户通常通过点击来将焦点设置到控件上。 但是,您也可以指定哪些控件以编程方式获取焦点。 这样做的一种方法是将控件的选项卡索引设置为0(最低值表示将具有初始焦点的控件)。 第二种可能性是在表单的Load事件中使用以下代码行,或者在设置Selected属性之后立即使用:

     myListView.Select(); 

    这个解决scheme的问题是,当用户将焦点设置到窗体上的其他控件(如文本框或button)时,选定的项目将不再突出显示。

  2. 要解决这个问题,你需要将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();