如何移除ListViewItem之间的1px空间

本文关键字:1px 空间 之间 ListViewItem 何移 | 更新日期: 2023-09-27 18:06:32

在ListView中,ListViewItems之间有1px的空间,这导致我经常错过它们之间的点击。这只会发生在ListViewGroup中。

我录制了视频来展示:https://jaex.getsharex.com/2022/06/pBBk1aXmD6.mp4

在视频中,我可以在两个项目之间单击,这使得ListViewItem未被选中。这个问题不会发生,如果我不使用ListViewGroup。

如何移除ListViewItem之间的1px空间

我现在使用这个解决方案:

    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;
            }
        }
    }

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

据我所知,没有这样的属性可以设置。也许你可以自己画出ListViewGroup。或者尝试在没有分组的情况下解决它,但这显然对您来说不方便。

或者将选择存储在一个变量中,创建一个后台worker/click事件来检查ListViewGroup上的按钮单击,如果没有选择,则将其设置为上一个

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

查看msdn

给出的示例