我正在尝试以编程方式选择ListView中的第一项,但似乎没有被选择。我正在使用以下代码:
if (listView1.Items.Count > 0)
listView1.Items[0].Selected = true;
其实我以前遇到过这个问题,但是我不记得我是如何解决的!
Answers:
最有可能的,该项目被选择的,你就不能说,因为不同的控制具有焦点。您可以通过几种不同的方法来解决此问题,具体取决于应用程序的设计。
简单的解决方案是在ListView
显示表单时将焦点设置为第一个。用户通常通过单击将焦点设置为控件。但是,您也可以指定以编程方式获得焦点的控件。一种方法是将控件的选项卡索引设置为0(最低值表示将具有初始焦点的控件)。第二种可能性是在表单Load
事件中或设置Selected
属性后立即使用以下代码:
myListView.Select();
此解决方案的问题在于,当用户将焦点设置为表单上的其他控件(例如文本框或按钮)时,所选项目将不再以突出显示的方式显示。
要解决此问题,您需要将控件的HideSelection
属性设置ListView
为False。即使控件失去焦点,这也会导致所选项目保持突出显示。
当控件具有焦点时,所选项目的背景将以系统突出显示颜色绘制。当控制并没有具有焦点,所选项目的背景将用于灰色(或禁用)文本系统颜色画。
您可以在设计时或通过代码设置此属性:
myListView.HideSelection = false;
if (listView1.Items.Count > 0)
{
listView1.Items[0].Selected = true;
listView1.Select();
}
除非控件具有焦点(或将HideSelection
属性设置为false),否则列表项不会显示为选中状态
HideSelection
属性设置为false),否则列表项不会显示为选中状态。而且,如果您知道这一点,就不必首先提出这个问题。更重要的是,这在用户单击表单上其他位置时中断。突然,所选项目似乎不再被选中!只是从您的答案中复制并粘贴代码的询问者将不知道发生了什么,他们会回来询问另一个问题。
UsersLst.Items[index].EnsureVisible();
才能显示该元素。
我认为问题和解决方案由科迪·格雷(Cody Gray)描述!我还有一点注意。
请检查指定列表视图项(和控件!)的焦点。我可以使用以下代码行设置焦点和选择:
this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;
但是集中控制是一个条件!
我知道这是一个老问题,但是我认为这是绝对的答案。
listViewRamos.Items[i].Focused = true;
listViewRamos.Items[i].Selected = true;
listViewRemos.Items[i].EnsureVisible();
如果控件没有焦点,但是您想将焦点强加给控件,则可以添加以下行。
listViewRamos.Select();
为什么Microsoft不只是添加一种SelectItem()
为您完成所有任务的方法,这超出了我的范围。
Item
?是ListViewItem
吗 如果是,则无法使用来获取属性或方法.
。