C# 标记我的ListView中的最后一项

C# 标记我的ListView中的最后一项,c#,winforms,C#,Winforms,我构建应用程序并将文件添加到我的ListView中,我希望每次添加的最后一个文件将在我添加的Foreach语句中强调这一点lvFiles.Items[lvFiles.Items.Count-1].Selected=true但在本例中,我的ListView中的所有文件都被强调,而不仅仅是最后一个文件 List<string> filesList foreach (string fileName in filesList) {

我构建应用程序并将文件添加到我的ListView中,我希望每次添加的最后一个文件将在我添加的Foreach语句中强调这一点
lvFiles.Items[lvFiles.Items.Count-1].Selected=true
但在本例中,我的ListView中的所有文件都被强调,而不仅仅是最后一个文件

List<string> filesList

            foreach (string fileName in filesList)
            {
                FileInfo fileInfo = new FileInfo(fileName);
                if (checkFileCreationDate(fileInfo))
                {
                    if (editcap.isWiresharkFormat(fileInfo.FullName))
                    {
                        if (editcap.isLibpcapFormat(fileInfo.FullName))
                        {
                            addFileToListBox(fileInfo.FullName, capinfos.getFileDuration(fileInfo.FullName));
                        }
                        else if (!editcap.isLibpcapFormat(fileInfo.FullName))
                        {
                            fileToAdd = editcap.getNewFileName(fileInfo.FullName);

                            if (new FileInfo(fileToAdd).Exists && !fileInfo.Exists)
                            {
                                addFileToListBox(fileToAdd, capinfos.getFileDuration(fileInfo.FullName));
                            }
                        }
                    }
                }
            }

private void addFileToListBox(string filePath, string duration)
{
    item = new ListViewItem(new string[] { new FileInfo(filePath).Name, duration, "Waiting" });
    item.Tag = new FileInfo(filePath).FullName;
}
List文件列表
foreach(文件列表中的字符串文件名)
{
FileInfo FileInfo=新的FileInfo(文件名);
如果(选中文件创建日期(文件信息))
{
if(editcap.isWiresharkFormat(fileInfo.FullName))
{
if(editcap.isLibpcapFormat(fileInfo.FullName))
{
addFileToListBox(fileInfo.FullName,capinfos.getFileDuration(fileInfo.FullName));
}
如果(!editcap.isLibpcapFormat(fileInfo.FullName))
{
fileToAdd=editcap.getNewFileName(fileInfo.FullName);
if(新文件信息(fileToAdd.Exists&!FileInfo.Exists)
{
addFileToListBox(fileToAdd,capinfos.getFileDuration(fileInfo.FullName));
}
}
}
}
}
私有void addFileToListBox(字符串文件路径、字符串持续时间)
{
item=newlistViewItem(新字符串[]{newfileinfo(filePath).Name,duration,“Waiting”});
item.Tag=新文件信息(filePath).FullName;
}

只要把这句话放在你的foreach后面,它就会起作用

比如:


首先需要取消选择前面的元素,然后选择最后一个元素:

foreach (var item in lvFiles.Items)
{
    item.Selected = false;
}

lvFiles.Items[lvFiles.Items.Count - 1].Selected = true;

好的,但我希望我的应用程序在添加文件时始终显示我的列表视图中的最后一个文件,而不手动移动到列表的末尾。如果我从列表中将文件添加到列表视图中,请参见我的update@user1269592:见我编辑。应该取消选择最后一项,然后选择新项。但是,我怀疑这是否会出现,因为您似乎正在UI线程中完成所有工作,这将导致UI“冻结”。不工作,我希望在添加文件时,焦点将始终集中在ListView中的最后一项上
foreach (var item in lvFiles.Items)
{
    item.Selected = false;
}

lvFiles.Items[lvFiles.Items.Count - 1].Selected = true;