2012-05-14 71 views
1

我有一個形式與一個單一的DGV對齊窗體的中心。WinForm的寬度可以自動調整到DataGridView的總寬度嗎?

是否可以將窗體設置爲自動調整寬度(達到最大限制)以適應DGV - 取決於DGV中字段的總寬度。

我是否需要使用與this post類似的方法,或者使用控件屬性可以「開箱即用」嗎?

+0

是否使用一個簡單的形式或MDI容器? – SoEnLion

+0

WPF可以自動完成這樣的事情。 –

+0

如果停靠DGV,則可以使用Form.AutoSize和AutoSizeMode屬性使窗體自動調整到網格的大小。調整網格的大小是另一回事。 –

回答

1

編輯:

public Form1() 
{ 
    InitializeComponent(); 

    dataGridView1.AutoSize = true; 
    dataGridView1.SizeChanged += new EventHandler(dataGridView1_SizeChanged); 
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
} 

void dataGridView1_SizeChanged(object sender, EventArgs e) 
{ 
    Width = dataGridView1.Width + 10; 
} 
+0

不是我見過的最廣闊的答案?! – whytheq

+0

@whytheq我假設你已經足夠了解Brett的答案。 – ispiro

+0

確定 - 完成Brett的答案 - 歡呼 – whytheq

0

您可以設置DataGridView的大小適合它由「AutoSizeColumnsMode」和「AutoSizeRowsMo​​de」屬性設置爲「ALLCELLS」的內容:

dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells 

從這裏,你可以調整你的形式通過,以適應在DataGridView設置窗體的大小與控件的大小:

this.Height = dataGridView.Height; 
this.Width = dataGridView.Width; 

所以我想你可以檢查是否被處理「ColumnWidthChanged」事件(因爲你只關心寬度)添加或移除內容到DataGridView ,並調整窗體大小在那個處理程序。