C#ListView,View = List - 如何摆脱底部未使用的空间?

时间:2017-04-23 19:09:39

标签: c# listview

在带有View = List的C#ListView中,底部有空白空间,为滚动条保留。奇怪的是,设置Scrollable = false只会增加这个未使用空间的大小。

如何摆脱这个空间或确定它用于显示物品?

修改 我在Windows窗体应用程序中遇到此问题。

编辑2:问题似乎与某种方式的字体大小相关联。我需要字体大小为9磅。 11点这个问题不会出现。

编辑3:我也试过Item spacing in ListView where View=List,但这也没有帮助。

编辑4:在Win7下使用Win7主题。但是,至少在Scrollable = false的情况下,经典主题不会发生。

Unused space at the bottom of ListView, View=List

1 个答案:

答案 0 :(得分:0)

仍然希望有一个更优雅的解决方案,但就目前而言,我发现了这个解决方法:

可以使用Panel来消除额外的空间。我从TaW对Add padding to last ListView item in WinForms

的回答中得出了这个想法

请记住,这对我有用,因为我不想要或不需要滚动条。

        listView1.Scrollable = true;
        int itemHeight = listView1.GetItemRect(0).Height;
        int numItemsPerColumn = 10;
        //One needs to add 21 to the height, because even if no Scrollbar
        //is needed, that space will stay reserved.
        listView1.Size = new Size(500, itemHeight * numItemsPerColumn + 21);
        Panel P = new Panel();
        P.BackColor = listView1.BackColor;
        P.Location = listView1.Location;
        //The height you actually want
        P.Size = new Size(500, itemHeight * numItemsPerColumn + 4);
        P.BorderStyle = listView1.BorderStyle;
        listView1.BorderStyle = BorderStyle.None;
        listView1.Parent = P;
        listView1.Location = new Point(0, 0);
        this.Controls.Add(P);