1
我試圖在計算任何靜態寬度列寬度後,根據剩餘大小僅重新調整ListView的某些列大小。例如,我不希望列(如數量,價格等)調整大小,但我希望列的數據通常具有更廣泛的數據,如名稱,描述等。以下是我正在嘗試使用的方法,但它不起作用。如何調整某些列表視圖列的大小與列表視圖的剩餘大小成比例
順便說一句,我在ClientSizeChanged事件觸發ListView時調用此方法。不確定這是否相關。
public static void ResizeListViewColumns(ListView lv, List<int> fixedColumnIndexes, List<int> nonFixedColumnIndexes)
{
int lvFixedWidth = 0;
int lvNonFixedWidth = 0;
if (fixedColumnIndexes.Count + nonFixedColumnIndexes.Count != lv.Columns.Count)
{
throw new Exception("Number of columns to resize does not equal number of columns in ListView");
}
else
{
// Calculate the fixed column width
// Calculate the non-fixed column width
// Calculate the new width of non-fixed columns by dividing the non-fixed column width by number of non-fixed columns
foreach (var fixedColumn in fixedColumnIndexes)
{
lvFixedWidth += lv.Columns[fixedColumn].Width;
}
foreach (var nonFixedColumn in nonFixedColumnIndexes)
{
lvNonFixedWidth += lv.Columns[nonFixedColumn].Width;
}
int numNonFixedColumns = nonFixedColumnIndexes.Count;
foreach (var newNonFixedColumn in nonFixedColumnIndexes)
{
lv.Columns[newNonFixedColumn].Width = lvNonFixedWidth/numNonFixedColumns;
}
}
}
謝謝你。這對我來說很好。 – Grasshopper
一個簡單的問題,如果你有一分鐘。有沒有簡單的方法來確定是否存在滾動條,以便可以通過滾動條的寬度來減小最後一列的寬度? – Grasshopper
我第一次猜測會嘗試ListView.ClientSize,因爲它不應該包括那些部分,包括滾動條 – Alan