【问题标题】:How to select items in a ListView?如何在 ListView 中选择项目?
【发布时间】:2015-10-07 06:50:06
【问题描述】:

这是我的代码:

for (int i = 0; i < 30; i++)
{
    FileListView.Items.Add(new ListViewItem(new[] { "asd1", "asd2" }));

    if (i < 10)
    {
        FileListView.Items[i].Selected = true;
    }
}

FileListView.ItemDrag += new ItemDragEventHandler(FileListView_ItemDrag);

但是当我运行应用程序时,我看不到选择的前 10 个项目。要查看它们,我需要单击其中一个,它们会突出显示(但当然会立即取消选择,因为它就像单击单行一样)。

如何预选 10 个项目?因此用户看到它们被选中,然后可以单击以拖放到某个目的地...

【问题讨论】:

  • 我复制/粘贴了您的代码,它工作得很好。您是否正在运行任何其他代码来聚焦/选择表单上的其他元素? example
  • 我已经添加了另一行,即链接到 ListView 的 Drag 事件。但我不认为这很重要......
  • 这段代码在哪里?我已将您的代码复制并粘贴到构造函数 Form_Load()、Form_Shown()、Form_VisibleChanged() 中,它们都可以工作。

标签: c# .net winforms listview


【解决方案1】:

听起来您的 ListView 没有聚焦,所以当您选择项目时它们不会突出显示。

您可以像这样事先集中控制:

FileListView.Focus();

或者最好禁用HideSelection 属性。这允许 ListView 在未获得焦点时显示所选项目。

FileListView.HideSelection = false;

编辑:使用 OP 需要显示蓝色的新信息,完成后将键盘焦点赋予控件:

FileListView.Select();

【讨论】:

  • 我同时拥有 .Focus(在选择它们之前)和 Hide selection false。但是现在我看到选定的项目是灰色的,而不是蓝色的!我需要蓝色...
  • 抱歉,您没有提到它们必须显示为蓝色,就好像 ListView 有键盘焦点一样。更新了答案,但公平地说,我认为@Jon 刚刚击败了我!
【解决方案2】:

正在选择项目,但未激活控件。使用FileListView.Select() 激活控件。

【讨论】:

    【解决方案3】:

    你是通过设计器还是通过代码设置了多选属性?

     FileListView.MultiSelect=true ;
    

    也可以试试:

     FileListView.Invalidate() after the loop.
    

    【讨论】:

    • 其他可能的尝试:Control.Invalidate()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多