【问题标题】:Indicating a selected item in a listview指示列表视图中的选定项目
【发布时间】:2010-08-03 15:54:03
【问题描述】:

我在 .NET Winforms 中有一个 ListView 控件,其中包含来自目录的文件名。第一次显示控件时,我填充了列表视图,然后以编程方式选择列表中的第一项:

    if (lvwFiles.Items.Count > 0)
    {
        ListViewItem firstItem = lvwFiles.Items[0];
        firstItem.Selected = true;
    }

这很好用,只是列表中的第一个项目应该在视觉上突出显示(反向突出显示?)以向用户表明它是被选中的,就像用户然后单击其中一个项目一样。

这似乎是一个愚蠢的问题,但我在 Stackoverflow 和 elsehwere 上环顾四周,并没有看到明显的答案。有没有一种简单的方法可以通过设置属性或类似的东西来实现这一点?

【问题讨论】:

    标签: .net winforms


    【解决方案1】:

    在设计器中(或通过代码)将 HideSelection 属性更改为 false。即使控件没有焦点,这样做也可以显示所选项目。

    【讨论】:

    • 就是这样;谢谢你!我知道这很简单/愚蠢。
    【解决方案2】:

    不确定这是否有效,因为我还没有运行程序,但你不能选择你想要的行(来自 lvwFile.Items)并将 Selected 值设置为 true。例如:

    temp.Items(rowIndex).Selected
    

    【讨论】:

    • 这就是我正在做的事情(如果您在行尾添加“= true”)。它确实选择了该项目,但它没有向用户表明该行已被选中,这是我的问题。
    • 我使用了 devExpress,我所要做的就是更改 temp.Items(rowIndex).editValue = true。
    【解决方案3】:

    注册 selectedIndexChanged 事件。在这里,您可以对所选项目执行您需要的任何视觉亮点。

        void listView1_SelectedIndexChanged( object sender, EventArgs e )
        {
            foreach ( ListViewItem lvi in listView1.SelectedItems )
            {
                lvi.BackColor = Color.Black;
                lvi.ForeColor = Color.Chocolate;
            }
            // TODO: Reset the other items to normal.
        }
    

    【讨论】:

    • 为什么不用系统自带的高亮?
    • 这是我最初所做的。它有效,但它绝对是一个次优的黑客攻击。
    【解决方案4】:

    你正在做的应该可以正常工作。

    经过一些测试,看起来列表视图的 tabstop 属性必须设置为 true,并且列表视图的选项卡索引必须为 0。

    【讨论】:

    • 这只是强制控件在显示表单时获得焦点。如果用户关闭控件,则选择将再次消失。
    • 正确,因为他说的是在设置时选择它(IE:首先显示控件)
    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2010-11-23
    相关资源
    最近更新 更多