我试图以编程方式 Select ListView中的第一项,但它似乎未被选中.我使用的代码如下:

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

事实上,我以前也遇到过这个问题,但我不记得是怎么解决的!

推荐答案

最有可能的情况是,被选中的项is,您无法区分,因为不同的控件具有焦点.有几种不同的方法可以解决这个问题,具体取决于应用程序的设计.

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

    myListView.Select();
    

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

  2. 要解决此问题,您需要将ListView控件的HideSelection property设置为False.这将使选定项变为remain highlighted,即使控件失go 焦点也是如此.

    当控件has聚焦时,所选项目的背景将用系统突出显示 colored颜色 绘制.当控件not具有焦点时,选定项的背景将以用于灰色(或禁用)文本的系统 colored颜色 绘制.

    您可以在设计时或通过以下代码设置此属性:

    myListView.HideSelection = false;
    

.net相关问答推荐

使用EFCore.BulkExtensions库方法BulkInertOrUpdate时区分插入和更新的记录

Azure管道-使用.NET 8 RC2 SDK生成C#项目失败

在数据网格中:如何在更改单元格 A 中的值后显示单元格 B 中的更改

如何查询 DOTNET_CLI_TELEMETRY_OPTOUT 是否永久设置为 TRUE?

无法通过构建目标访问 dotnet 的环境变量

判断内部异常的最佳方法?

lock() 是否保证按请求的顺序获得?

为什么要判断这个!= null?

使文本框不可编辑

托管和非托管代码、内存和大小有什么区别?

C#:内存不足异常

带有输入字段的消息框

.net 服务总线建议?

C# 方法可以定义为采用的最大参数数是多少?

隐式与显式接口实现

哪个更快:清除集合或实例化新的

从 C# 中的接口继承 XML 注释

如何使用 EPPlus 设置 XLSX 单元格宽度?

通过继承扩展枚举

将控制台输出镜像到文件