在C#中如何选择当前项目

时间:2011-02-01 21:40:41

标签: c# listview

我正在开发一个程序,该程序正在使用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();
    }
}

2 个答案:

答案 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对集合进行更新并同时更新它。

我可以提供代码示例,但如果您的列表视图永远不会改变,我将不会担心它