我想在我的ListView中标记当前使用的文件

本文关键字:文件 我的 ListView | 更新日期: 2023-09-27 17:50:22

我构建了一个应用程序,它取我的ListView (pcap文件)中的所有文件,并开始播放所有数据包。我想要的是,当前播放的文件将标记,并在此文件完成后的下一个文件将被标记,焦点将一直在选定的文件上(我不想手动滚动查看文件)我现在所做的是标记了第一个文件,在它完成后,我的应用程序也标记了第二个和第三个文件。

这是我的开始按钮:

private void btnStart_Click(object sender, EventArgs e)
{
    string filePath = string.Empty;
    ThreadPool.QueueUserWorkItem(delegate
    {
        for (int i = 0; i < lvFiles.Items.Count; i++)
        {
            this.Invoke((MethodInvoker)delegate
            {                        
                lvFiles.EnsureVisible(i);
                lvFiles.Items[i].Selected = true;
                filePath = lvFiles.Items[i].Tag.ToString();
            });
            PcapFile pcapFile = new PcapFile();
            pcapFile.sendQueue(filePath, adapter);
        }
    });
}

lvFiles是我的ListView, PcapFile是我的class, pcapFile.sendQueue是开始播放的方法。

我想在我的ListView中标记当前使用的文件

您应该在列表视图上调用Select()。另外,不要忘记在选择下一个项目之前取消选择当前项目。

    for (int i = 0; i < lvFiles.Items.Count; i++)
    {
        this.Invoke((MethodInvoker)delegate
        {                        
            lvFiles.EnsureVisible(i);
            lvFiles.Items[i].Selected = true;
            lvFiles.Select();
            filePath = lvFiles.Items[i].Tag.ToString();
        });
        PcapFile pcapFile = new PcapFile();
        pcapFile.sendQueue(filePath, adapter);
        lvFiles.Items[i].Selected = false;
    }