2012-09-24 93 views
0

我的問題很簡單 - 後數據綁定我想設置所有列的寬度,使得它不會是水平scrolling.Something這樣的:計算寬度avaible在的dataGridView

columnWidth = grid.width/grid.Columns.Count 

但這不表達考慮「左側部分gridView」與至極我可以選擇行,這將顯示當前行。如何計算它的寬度? [(grid.width - X)/grid.Columns.Count]

回答

1

很容易做到這一點。只需將DataGridView.AutoSizeColumnMode屬性設置爲Fill即可。

grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 

而且您可能需要明確要求網格調整列間距。我記不得了。但是,這是簡單的事:

grid.AutoResizeColumns(); 

按照documentationFill將執行以下操作:

列寬調整,使所有列的寬度正好 填寫的顯示區域控制,僅需要水平滾動 以將列寬保持在DataGridViewColumn.MinimumWidth屬性值之上。相對列寬由相對的DataGridViewColumn.FillWeight屬性值確定。

所以基本上,只要你沒有任何列可以阻止它,MinimumWidth這個屬性就是你正在尋找的東西。

編輯:解決了OP的評論:

你總是可以創建一個簡單的屬性信息向您彙報。喜歡的東西...

public int DataGridViewDeadSpaceWidth 
{ 
    get 
    { 
     int x = grid.Width; 
     foreach (DataGridViewColumn column in grid.Columns) 
      x -= column.Width; 

     return x; 
    } 
} 

你也可以用它來從DataGridView繼承和自己添加的屬性來控制。請注意,您可能需要考慮一些來自DataGridView邊界的其他死區。

+0

這是一切都好。但如果有時我需要知道這個值?我怎麼能達到它沒有做反向操作:X =大小 - columnWidth *計數? –