在 Windows 表单列表框控件中的最后一项下方创建一个底部边距

Create a bottom margin below last item in a Windows Forms listbox control

我有一个简单的 Winforms 演示应用程序,其中停靠了一个列表框控件以填写表单的工作区。当我添加列表条目并更新 UI 时,第一个条目出现,然后是第二个条目,依此类推,直到列表框客户区完全填满。

随着我继续添加条目,列表框自动滚动 属性 滚动列表框,以便在列表框显示区域的最后一行显示最新的条目。一切正常。

但最后一行离 window 的底部很近,我想控制添加的最后一行的位置,使其重新显示在大约 3/4 高度的某个位置列表框。即使底部上方有 1 行也比紧靠列表框的底部边框更好。

我曾尝试为 listbox1.TopIndex 属性 使用不同的数字,但没有成功。我不明白如何设置通常的 listbox.TopIndex = listbox1.Items.Count - 1; 值“控制列表框中显示的第一行”。根据文档,将 TopIndex 设置为 Count - 5 应该滚动列表框,以便第一条可见行是列表底部的第五行。

有谁知道如何控制列表框最后一行的位置以在列表框底部留下一些空白?谢谢。

您不能直接这样做,ListView 的样式选项有点受限。

你可以试试这个技巧。删除 Listviews 边框并将其放置在具有适当填充的面板内:

Panel listviewPanel = new Panel();
listviewPanel.BackColor = myListview.BackColor;
listviewPanel.Location = myListview.Location;
listviewPanel.Size = myListview.Size;
listviewPanel.Padding = new System.Windows.Forms.Padding(0,0,0,10);
listviewPanel.BorderStyle = myListview.BorderStyle;
myListview.BorderStyle = BorderStyle.None;
myListview.Parent = listviewPanel;
myListview.Dock = DockStyle.Fill;
this.Controls.Add(listviewPanel);