fit dataGridView的大小为行和列的总大小
本文关键字:小为 dataGridView fit | 更新日期: 2023-09-27 18:08:26
我想使dataGridView的大小适合列和行总大小。关于总高度,我设法使它适合列的高度,像这样:
const int datagridLines = 30;
s.Height = dataGridView2.Columns[0].HeaderCell.Size.Height;
for (byte i = 0; i < datagridLines; i++)
{
dataGridView2.Rows.Add();
s.Height += dataGridView2.Rows[i].Height;
}
dataGridView2.ClientSize = s;
我尝试了一些东西来适应宽度,但没有运气。有什么建议吗?
谢谢。
应该可以:
int height = 0;
foreach (DataGridViewRow row in dataGridView1.Rows) {
height += row.Height;
}
height += dataGridView1.ColumnHeadersHeight;
int width = 0;
foreach (DataGridViewColumn col in dataGridView1.Columns) {
width += col.Width;
}
width += dataGridView1.RowHeadersWidth;
dataGridView1.ClientSize = new Size(width + 2, height + 2);
width
和height
值的+ 2是一个模糊因子,用于考虑DataGridView内部元素的宽度。我记得在某个地方看到过代码,可以让您在没有硬编码数字的情况下获得此值,但我现在找不到它。
Rows和Columns集合的GetRowsHeight和GetColumnsWidth方法应该可以轻松地为您提供所需的内容:
var totalHeight = dataGridView2.Rows.GetRowsHeight(DataGridViewElementStates.None);
var totalWidth = dataGridView2.Columns.GetColumnsWidth(DataGridViewElementStates.None);
更完整的版本:
dataGridView.Height = dataGridView.Rows.GetRowsHeight(DataGridViewElementStates.None) + dataGridView.ColumnHeadersHeight + 2;
dataGridView.Width = dataGridView.Columns.GetColumnsWidth(DataGridViewElementStates.None) + dataGridView.RowHeadersWidth + 2;
您将需要使用DataGridViewRow集合和DataGridViewColumn集合的属性来完成此操作。
尝试类似于下面使用的方法:
如何在DataGridView中增加行大小
这有点晚了,而且在visual basic中,但这对我来说是可行的其他人发现了这条线索。我在一个tableLayoutPanel中使用一个停靠的datagridview,它在窗体调整大小时自动调整大小。它不会缩小形状。我刚开始的时候,表格很小。可以使用相同的技术添加行。
Private Sub setFormWidth()
Dim iTotalWidth As Integer = 0 '884
Dim iDisplayedWidth As Integer = 0
Dim r As Rectangle
For Each c As DataGridViewColumn In dgv_EmpList.Columns
If c.Visible Then
iTotalWidth += c.Width
r = dgv_EmpList.GetColumnDisplayRectangle(c.Index, True)
iDisplayedWidth += r.Width
End If
Next
Me.Width += (iTotalWidth - iDisplayedWidth)
End Sub