ListView反转垂直滚动方向
本文关键字:滚动 方向 垂直 ListView | 更新日期: 2023-09-27 18:22:16
我正在动态填充ListView,搜索长目录路径。
ListView的更新非常不稳定,垂直滚动条向上,我希望滚动条在向ListView添加数据时向下滚动,我希望这将停止结果的闪烁。
您可以使用以下代码使ListBox实现这一点,但使用ListView找不到类似的东西。
lstBoxResults2.Items.Add(value);
lstBoxResults2.TopIndex = lstBoxResults2.Items.Count - 1;
lstBoxResults2.Update();
我曾尝试将排序属性设置为升序或降序,但这也不起作用,我得到的结果很奇怪,即找到的路径没有按行进顺序显示,即
Folder 1...
Folder 2...
Folder 2...
Folder 1...
etc.
下面的代码。
listView1.View = View.Details;
listView1.GridLines = true;
listView1.Columns.Add("Length", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Path", 1800);
//Test length 150
//static int MAX_DIR_PATH = 150;
static int MAX_DIR_PATH = 260;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
btnStop.Enabled = true;
if (rBtnFolders.Checked == true)
{
try
{
this.Invoke(new Action(() => lblStatus.Text = "Scanning..."));
foreach (string dir in Directory.EnumerateDirectories(txtPath.Text, "*.*", SearchOption.AllDirectories))
{
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
//backgroundWorker1.ReportProgress(0);
return;
//break;
}
this.Invoke(new Action(() => listUpdate1(dir + Environment.NewLine)));
try
{
if (dir.Length >= MAX_DIR_PATH)
{
this.Invoke(new Action(() => listView1.Items.Add(dir.Length.ToString()).SubItems.Add(dir)));
this.Invoke(new Action(() => lblCount.Text = listView1.Items.Count.ToString())); }
}
catch (Exception err)
{
// This code just logs the message and continues to recurse.
log.Add(err.Message);
}
}
}
catch (Exception err)
{
// This code just logs the message and continues to recurse.
log.Add(err.Message);
}
}
顺便说一句,请随意批评代码,出于某种原因,上面的代码不会在连接到我电脑的突袭盒上递归搜索(驱动器M:),但会在连接的U盘上搜索(J:)如果需要,我会发布一个新问题。
根据我对您问题的理解,我认为这可能是您想要的。如何在更新新项目时在WinForms ListView控件中自动向下滚动?。
另一个想法是在(Index=0)
顶部插入每个项目时使用Items.Insert()
。我最近用我创建的一个事件查看器做了这件事,它似乎运行得很好。