我有一个包含两列的Win Form,我希望第一列宽度为ListView大小的2/3,第二列为1/3。我希望能够使用2列填充ListView,并且能够缩小和扩展它,以便在ListView项目位于框底部下方时为垂直滚动条留出空间。我已经提出了这个代码,但这只会在滚动条存在时才会生效,即使这样,它也会略微扩展列,以便创建一个我不想要的水平滚动条。非常感谢任何帮助。
private void AddColumn()
{
listView1.View = View.Details;
listView1.Columns.Add("Item");
listView1.Columns.Add("Date Added");
int itemColumnWidth = listView1.Width - SystemInformation.VerticalScrollBarWidth;
listView1.Columns[0].Width = itemColumnWidth / 3 * 2;
listView1.Columns[1].Width = itemColumnWidth / 3;
}
答案 0 :(得分:1)
您可以做的是将第一列的大小调整为2/3宽度,并将第二列扩展为剩余宽度。
在这个问题的答案中解释了将第二列扩展到剩余宽度的方法:ListView Final Column Autosize creates scrollbar
答案 1 :(得分:1)
我一直有这个问题。您必须总是为滚动条减去一点空间。至少减去4个额外像素或保持安全减去8px到10px。没有人会注意到额外的空间。
我猜有人在实现listviews时没有得到正确的算法......必须有一些内部填充列。该设计似乎专注于在需要时创建额外的空间,而不是将列安装到屏幕上。想想Windows资源管理器:列永远不会调整到窗口的大小,并且总是存在令人讨厌的滚动条。
我们都希望我们的listview看起来像Visual Studio设计简洁的错误列表,但该控件似乎是一个不同的实现,始终保证将列适合控件的宽度。