Hom*_*mam 61 .net c# listview selection winforms
我试图以编程方式选择ListView中的第一个项目,但它似乎没有被选中.我使用以下代码:
if (listView1.Items.Count > 0)
listView1.Items[0].Selected = true;
Run Code Online (Sandbox Code Playgroud)
其实我之前遇到过这个问题,但我不记得我是怎么解决它的!
Cod*_*ray 83
最有可能的是,该项目正在被选中,您无法分辨,因为不同的控件具有焦点.根据应用程序的设计,有几种不同的方法可以解决这个问题.
简单的解决方案是在ListView显示表单时将焦点设置为第一个.用户通常通过单击将焦点设置为控件.但是,您还可以指定哪些控件以编程方式获得焦点.一种方法是将控件的选项卡索引设置为0(最低值表示将具有初始焦点的控件).第二种可能性是在表单的Load事件中使用以下代码行,或者在设置Selected属性后立即使用:
myListView.Select();
Run Code Online (Sandbox Code Playgroud)
此解决方案的问题在于,当用户将焦点设置为表单上的其他控件(例如文本框或按钮)时,所选项目将不再突出显示.
要解决此问题,您需要将控件的HideSelection属性设置ListView为False.这将导致所选项目保持突出显示,即使控件失去焦点.
当控件具有焦点时,所选项目的背景将使用系统高亮颜色绘制.当控制并没有具有焦点,所选项目的背景将用于灰色(或禁用)文本系统颜色画.
您可以在设计时或通过代码设置此属性:
myListView.HideSelection = false;
Run Code Online (Sandbox Code Playgroud)Vik*_*iaR 34
if (listView1.Items.Count > 0)
{
listView1.Items[0].Selected = true;
listView1.Select();
}
Run Code Online (Sandbox Code Playgroud)
除非控件具有焦点(或将HideSelection属性设置为false),否则列表项不会显示为选中状态
Jon*_*ood 11
我知道这是一个老问题,但我认为这是确定的答案。
listViewRamos.Items[i].Focused = true;
listViewRamos.Items[i].Selected = true;
listViewRemos.Items[i].EnsureVisible();
Run Code Online (Sandbox Code Playgroud)
如果有可能控件没有焦点,但您想将焦点强制给控件,则可以添加以下行。
listViewRamos.Select();
Run Code Online (Sandbox Code Playgroud)
为什么 Microsoft 不只是添加一种SelectItem()方法来为您完成所有这一切,这超出了我的理解。
我认为问题和解决方案是由cody grey描述的!我还有一个补充说明.
请检查指定列表视图项目(和控件!)的焦点.我可以使用以下代码行设置焦点和选择:
this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;
Run Code Online (Sandbox Code Playgroud)
但重点控制是一个条件!
| 归档时间: |
|
| 查看次数: |
146048 次 |
| 最近记录: |