我正在开发一个程序,该程序正在使用listview,其中包含一些使用foreach循环运行的项目。如何获取列表视图以突出显示当前项目?
我到目前为止所尝试的代码是:
foreach (ListViewItem lvi in lvActions.Items)
{
// clear list view items and select the current item
lvActions.SelectedItems.Clear();
lvActions.EnsureVisible(lvi.Index);
lvi.Selected = true;
lvi.Focused = true;
lvActions.Refresh();
// Execute function on current item
myFunction(lvi.Text);
// Pause foreach for 3 seconds
Stopwatch delayWatch = new Stopwatch();
delayWatch.Reset();
while (delayWatch.ElapsedMilliseconds < 3000)
{
delayWatch.Start();
Application.DoEvents();
delayWatch.Stop();
}
}
答案 0 :(得分:3)
有一些与您的代码相关的有趣的线程问题。
从我可以告诉你想要等待3秒然后突出显示列表中的一些项目。
我会做的不同,以避免一些线程问题。这样的事情。
Timer t = new Timer();
t.Interval = 3000;
t.Tick += new EventHandler(t_Tick);
t.Start();
//add then
void t_Tick(object sender, EventArgs e)
{
foreach(ListViewItem i in itemsToSelect)
{
i.Selected = true;
}
}
答案 1 :(得分:0)
@ madmik3的解决方案可以正常工作,如果你的ListView
永远不会改变它的项目。如果是,则代码将失败,因为您无法foreach
对集合进行更新并同时更新它。
我可以提供代码示例,但如果您的列表视图永远不会改变,我将不会担心它