如何在ListViewItem之间删除1px空间

时间:2014-06-03 15:11:31

标签: c# .net winforms listview listviewitem

在ListViewItems之间的ListView中有1px的空间,它导致我经常错过它们之间的点击。这只发生在ListViewGroup中的ListViewItem。 我录制了视频来展示它:https://mediacru.sh/wSDSRZ5gwJdf/direct 在视频中,我可以在两个项目之间单击,这使得ListViewItem未被选中。 如果我不使用ListViewGroup,则不会发生此问题。

3 个答案:

答案 0 :(得分:0)

据我所知,没有这样的财产可以设定。也许你可以自己画ListViewGroup。或者试着在没有小组的情况下解决它,但这对你来说显然是不方便的。

或者将选择存储在变量中,创建后台工作人员/单击事件以检查ListViewGroup上的按钮单击,如果未选择任何内容,则将其设置回上一个。

答案 1 :(得分:0)

没有这样的属性可以分配这样的值。但是,您可以通过在ListViewItem事件中绘制每个DrawItem来自定义列表项。您需要先为此分配OwenerDraw个事件。

查看msdn

中给出的示例

答案 2 :(得分:0)

我现在正在使用此解决方法:

    private void lvMain_MouseUp(object sender, MouseEventArgs e)
    {
        if (lvMain.SelectedItems.Count == 0 && (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right))
        {
            ListViewItem lvi = lvMain.GetItemAt(e.X, e.Y);

            if (lvi == null)
            {
                // Workaround for 1px space between items
                lvi = lvMain.GetItemAt(e.X, e.Y - 1);
            }

            if (lvi != null)
            {
                lvi.Selected = true;
            }
        }
    }

如果单击以清空两个项目之间的空格,则检查此位置的一个像素顶部,如果项目存在于此位置,则选择它。