我正在尝试以编程方式选择ListView中的第一个项目,但它似乎没有被选中。我使用以下代码:
if (listView1.Items.Count > 0)
listView1.Items[0].Selected = true;
其实我以前遇到过这个问题,但我不记得我是怎么设法解决的!
答案 0 :(得分:81)
最有可能的是,项目被选中,您无法分辨,因为不同的控件具有焦点。根据应用程序的设计,有几种不同的方法可以解决这个问题。
简单的解决方案是在显示表单时首先将焦点设置为ListView
。用户通常通过单击将焦点设置为控件。但是,您还可以指定哪些控件以编程方式获得焦点。一种方法是将控件的选项卡索引设置为0(最低值表示将具有初始焦点的控件)。第二种可能性是在表单的Load
事件中使用以下代码行,或者在设置Selected
属性后立即使用以下代码:
myListView.Select();
此解决方案的问题在于,当用户将焦点设置为表单上的其他控件(例如文本框或按钮)时,所选项目将不再突出显示。
要解决此问题,您需要将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();