ListView列大小

时间:2011-09-14 13:23:09

标签: c# winforms listview

我有一个包含两列的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;
}

2 个答案:

答案 0 :(得分:1)

您可以做的是将第一列的大小调整为2/3宽度,并将第二列扩展为剩余宽度。

在这个问题的答案中解释了将第二列扩展到剩余宽度的方法:ListView Final Column Autosize creates scrollbar

答案 1 :(得分:1)

我一直有这个问题。您必须总是为滚动条减去一点空间。至少减去4个额外像素或保持安全减去8px到10px。没有人会注意到额外的空间。

我猜有人在实现listviews时没有得到正确的算法......必须有一些内部填充列。该设计似乎专注于在需要时创建额外的空间,而不是将列安装到屏幕上。想想Windows资源管理器:列永远不会调整到窗口的大小,并且总是存在令人讨厌的滚动条。

我们都希望我们的listview看起来像Visual Studio设计简洁的错误列表,但该控件似乎是一个不同的实现,始终保证将列适合控件的宽度。