2011-04-05 42 views
2

我有一個DataGridView和其Dock屬性設置爲「填充」。所以當我調整我的表格時,DataGridView將調整大小。在我的情況下,我設置了一個固定值的列寬爲DataGridView。像這樣:datagridview和窗體調整在C#

dgGrid.Columns[0].Width = 50; 
dgGrid.Columns[1].Width = 126; 
dgGrid.Columns[2].Width = 100; 

我想列在我DataGridView當控件大小按比例調整。當我的網格列與上面一樣設置時,如何以編程方式執行此操作?請幫我用代碼。謝謝。

+4

您在編寫代碼時似乎設法使用大寫字母。爲什麼不寫英文? – 2011-04-05 12:06:09

+0

以百分比設置寬度將是解決方案。不好的WinForms不支持這個。考慮切換到WPF而不是現在已經過時的WinForms。 – 2011-04-05 12:07:08

+1

@Claus:我不確定爲什麼「切換到WPF」已成爲人們不知道如何在WPF中實現某些東西的答案。切換到WPF當然不是奇蹟般的治療方法。特別是,您在哪裏找到沒有嵌入WinForms的WPF應用程序的DataGridView控件? – 2011-04-05 12:16:40

回答

2

新的大小每列有沒有特別這樣做的時候,你硬編碼列的寬度值的優雅的方式。我不確定你爲什麼必須這樣做;這個問題並沒有提供太多的背景資料。

更好的解決方案是調用AutoResizeColumns method,它將使用指定的大小模式自動調整所有列的寬度。您可以在表單的Resize事件處理程序中調用此方法。例如:

protected override void OnResize(EventArgs e) 
{ 
    myDataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 
} 

This MSDN article給出了關於大小爲DataGridView控制選項的詳細信息。

1

您可以使用DataGridView.Resize事件canlculate新的寬度取決於

+0

可以請你給我通過代碼的邏輯。 – Thomas 2011-04-05 13:14:48

0
datagridview.Columns["columnName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
+2

請注意,設置此屬性將阻止用戶使用鼠標手動調整列的大小。 – 2011-04-05 12:15:25