【问题标题】:How to remove 1px space between ListViewItem如何删除 ListViewItem 之间的 1px 空间
【发布时间】:2014-06-03 15:11:30
【问题描述】:

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

【问题讨论】:

    标签: c# .net winforms listview listviewitem


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      查看msdn中给出的示例

      【讨论】:

        【解决方案3】:

        我现在正在使用这个解决方法:

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

        如果点击两个项目之间的空白空间然后检查该位置顶部的一个像素,如果项目存在于该位置然后选择它。

        【讨论】:

          猜你喜欢
          • 2014-09-15
          • 2022-10-20
          • 2015-04-09
          • 2020-11-19
          • 2019-06-13
          • 1970-01-01
          • 1970-01-01
          • 2020-02-15
          • 1970-01-01
          相关资源
          最近更新 更多