我正在将DataTable绑定到GridView。它不会调整DataTable的高度和宽度。如果行数很少,我如何拉伸显示所有列和高度的网格宽度。
答案 0 :(得分:21)
只需转到datagrid =>
的属性即可然后在Layout =>
部分AutoSizeColumnsMode将其设置为Fill ...
答案 1 :(得分:3)
要自动调整列以适合数据(宽度方式),然后自动调整表单以适合gridview(宽度方向),请使用以下代码:
foreach (DataGridViewColumn column in dataGridView1.Columns)
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
this.Width = dataGridView1.Width + 100;
其中dataGridView1是此示例中Datagridview的名称,this
引用表单实例。 100是一个常数,表示您希望表单比datagridview宽多少像素。 (注意:您可能需要进行一些宽度检查以确保您的表格和数据网格视图不比用户的屏幕宽)
要自动调整datagridview以适应行(按高度方式),然后自动调整表单以适合gridview(按高度方式),请使用以下代码:
int totalRowHeight = dataGridView1.ColumnHeadersHeight;
foreach (DataGridViewRow row in dataGridView1.Rows)
totalRowHeight += row.Height;
dataGridView1.Height = totalRowHeight;
this.Height = dataGridView1.Height + 100;
其中dataGridView1是此示例中Datagridview的名称,this
引用表单实例。 100是一个常数,表示您希望表单比datagridview高出多少像素。 (注意:您可能需要进行一些高度检查以确保您的表格和数据网格视图不高于用户的屏幕)
答案 2 :(得分:2)
首先,您的表单必须足够大,以便DataGridView扩展并显示所有列。在屏幕截图中,它看起来不够宽。您可以手动设置datagridview的大小,但很少您在设计时知道每列的确切宽度,因为您不知道在运行时每列中有多少。例如,您的Invoicedescription列可能包含长度不同的字符串。
我通常在像你这样的情况下做的是在表单上放置一个拆分器控件。顶部的文本框和Import Invoices按钮将位于拆分器控件的顶部面板中,DataGridView将位于底部面板中。然后,设置DataGridView的Dock属性以填充拆分器控件的底部面板。这样,当用户调整表单大小时,DataGridView将随之增长/缩小。
您可以通过设置DataGridView.AutoResizeRows属性来进一步控制列的显示方式。
只是将此选项作为一个选项,我不知道有什么方法可以让网格自动调整大小到它显示的数据。您可以计算行的高度/宽度,然后在代码中手动调整网格大小,但我会确保首先确实需要该要求。
答案 3 :(得分:1)
这假设所有行都具有相同的高度,即使第一个标题行具有不同的高度(例如包裹长标题)
If List.RowCount = 0 Then
List.Height = 0
ElseIf List.RowCount = 1 Then
List.Height = List.ColumnHeadersHeight
Else
List.Height = List.ColumnHeadersHeight + List.Rows(1).Height * (List.RowCount + 1)
End If
答案 4 :(得分:0)
将datagridviewautosizecolumn设置为" All" 然后,在包含datagridview的表单中,假设您在加载数据的任何地方填充加载事件处理程序或其他事件处理程序中的数据网格视图(必须在加载数据之后)键入:(VB)
Me.Width = DataGridView1.Width + 50 ' Number of pixels wider than the datagridview you want the form to be.
datagridview1是datagridview控件的名称。 我指的是包含datagridview控件的表单。
您可能需要最大化窗口或将其锚定到顶部和左侧以确保装配,具体取决于填充的数据集的大小。
答案 5 :(得分:0)
我知道这可能已经得到回答,但以防万一我在这里发布帮助我通过 AllCells 自动调整整个数据网格视图的内容:
加载数据源后,粘贴以下内容
dataGridView1.AutoResizeColumns();
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;