C# 要在我的ListView中标记当前使用的文件

C# 要在我的ListView中标记当前使用的文件,c#,winforms,C#,Winforms,我构建了一个应用程序,它获取我的ListView中的所有文件(pcap文件),并开始播放所有数据包。 我想要的是,当前播放的文件将被标记,在这个文件完成后,下一个文件将被标记,焦点将始终集中在所选文件上(我不想手动浏览所有文件以查看该文件) 我现在看到的是,第一个文件被标记,在它完成我的应用程序之后,第二个文件和第三个文件一起被标记 这是我的开始按钮: private void btnStart_Click(object sender, EventArgs e) { string fil

我构建了一个应用程序,它获取我的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);
        }
    });
}
private void btnStart\u单击(对象发送方,事件参数e)
{
string filePath=string.Empty;
ThreadPool.QueueUserWorkItem(委托
{
对于(int i=0;i

lvFiles
是我的列表视图,
PcapFile
是我的类,
PcapFile.sendQueue
是开始播放的方法。

为此,您应该在列表视图上调用
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;
    }
for(int i=0;i
您是否尝试设置lvFiles.SelectedIndex=i?ListView中没有SelectedIndex(ListBox有),那么EnsureRevible和Selected(我在示例中使用的其他两个属性)呢?FocusedItem单独和使用我的属性时,没有在使用中的文件上设置焦点