如何以编程方式选择ListView中的项目?

时间:2011-04-26 13:41:40

标签: c# .net winforms listview selection

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

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

其实我以前遇到过这个问题,但我不记得我是怎么设法解决的!

7 个答案:

答案 0 :(得分:81)

最有可能的是,项目选中,您无法分辨,因为不同的控件具有焦点。根据应用程序的设计,有几种不同的方法可以解决这个问题。

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

    myListView.Select();
    

    此解决方案的问题在于,当用户将焦点设置为表单上的其他控件(例如文本框或按钮)时,所选项目将不再突出显示。

  2. 要解决此问题,您需要将ListView控件的HideSelection property设置为False。这将导致所选项目保持突出显示,即使控件失去焦点。

    当控件具有焦点时,所选项目的背景将使用系统高亮颜色绘制。当控件具有焦点时,所选项目的背景将以用于灰色(或禁用)文本的系统颜色绘制。

    您可以在设计时或通过代码

    设置此属性
    myListView.HideSelection = false;
    

答案 1 :(得分:28)

if (listView1.Items.Count > 0)
{
    listView1.Items[0].Selected = true;
    listView1.Select();
}
除非控件具有焦点(或者将HideSelection属性设置为false),否则

列表项似乎未被选中

答案 2 :(得分:8)

我认为问题和解决方案是由cody grey描述的!我还有一个补充说明。

请检查指定列表视图项目(和控件!)的焦点。我可以使用以下代码行设置焦点和选择:

this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;

但重点控制是一个条件!

答案 3 :(得分:3)

        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

答案 4 :(得分:1)

我知道这是一个老问题,但我认为这是明确的答案。

listViewRamos.Items[i].Focused = true;
listViewRamos.Items[i].Selected = true;
listViewRemos.Items[i].EnsureVisible();

如果控件没有焦点,但您想强制对焦于控件,则可以添加以下行。

listViewRamos.Select();

为什么微软并没有添加一个SelectItem()方法来为你做这一切是超出我的。

答案 5 :(得分:0)

if (listView1.Items.Count > 0)
{
    listView1.FocusedItem = listView1.Items[0];
    listView1.Items[0].Selected = true;
    listView1.Select();
}

答案 6 :(得分:0)

ListViewItem.IsSelected = true;
ListViewItem.Focus();