C# 如何调整datagrid的大小
我在winform中有一个datagridview,我想做两件事。调整datagrid的大小,以便根据datagrid大小显示所有列(无滚动)调整winform的宽度C# 如何调整datagrid的大小,c#,winforms,datagrid,C#,Winforms,Datagrid,我在winform中有一个datagridview,我想做两件事。调整datagrid的大小,以便根据datagrid大小显示所有列(无滚动)调整winform的宽度 尝试了下面的代码,但无效* int width = 0; foreach (DataGridViewColumn col in information.Columns) { width += col.Width; } width += information.RowHe
- 尝试了下面的代码,但无效*
int width = 0; foreach (DataGridViewColumn col in information.Columns) { width += col.Width; } width += information.RowHeadersWidth; information.ClientSize = new Size(width + 100,height);
public Form1()
{
InitializeComponent();
// Create a DataGridView with 5 Columns
// Each column is going to sized at 100 pixels wide which is default
// Once filled, we will resize the form to fit the control
DataGridView dataGridView1 = new DataGridView();
for (int i = 0; i < 5; i++)
{
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Add(col);
}
dataGridView1.Location = new Point(0, 0);
// Add the DataGridView to the form
this.Controls.Add(dataGridView1);
// Step 2:
// Figure out the width of the DataGridView columns
int width = 0;
foreach (DataGridViewColumn col in dataGridView1.Columns)
width += col.Width;
width += dataGridView1.RowHeadersWidth;
// Step 3:
// Change the width of the DataGridView to match the column widths
// I add 2 pixels to account for the control's borders
dataGridView1.Width = width + 2;
// Step 4:
// Now make the form's width equal to the conbtrol's width
// I add 16 to account for the form's boarders
this.Width = dataGridView1.Width + 16;
}
public Form1()
{
初始化组件();
//创建一个包含5列的DataGridView
//默认情况下,每列的大小为100像素宽
//填充后,我们将调整窗体大小以适应控件
DataGridView dataGridView1=新建DataGridView();
对于(int i=0;i<5;i++)
{
DataGridViewTextBoxColumn=新DataGridViewTextBoxColumn();
dataGridView1.Columns.Add(col);
}
dataGridView1.Location=新点(0,0);
//将DataGridView添加到表单中
this.Controls.Add(dataGridView1);
//步骤2:
//计算DataGridView列的宽度
整数宽度=0;
foreach(dataGridView1.Columns中的DataGridViewColumn列)
宽度+=列宽度;
宽度+=dataGridView1.RowHeadersWidth;
//步骤3:
//更改DataGridView的宽度以匹配列宽
//我添加了2个像素来说明控件的边界
dataGridView1.Width=宽度+2;
//步骤4:
//现在使窗体的宽度等于conbtrol的宽度
//我加了16个来说明表格的寄宿生
this.Width=dataGridView1.Width+16;
}
这段代码创建了一个包含五列的DataGridView
,然后完全按照您的要求调整控件和表单的大小。我按照上面概述的步骤操作(步骤1除外,因为我的列中没有任何数据)
这个代码有效。因此,如果你的工作不正常,你肯定还有其他愚蠢的事情,我帮不了你。您好,我通过下面的代码找到了如何让它正常工作的方法。信息是数据网格,这是表单
int width = 0;
this.information.RowHeadersVisible = false;
for (int i = 0; i < information.Columns.Count; i++)
width += information.Columns[i].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
int rows = 0;
this.information.RowHeadersVisible = false;
for (int i = 0; i < information.Rows.Count; i++)
rows += information.Rows[i].GetPreferredHeight(i, DataGridViewAutoSizeRowMode.AllCells, true);
information.Size = new Size(width +20, rows+50);
this.Width = width + 50;
int-width=0;
this.information.RowHeadersVisible=false;
对于(int i=0;i
感谢您的快速响应,但我这样做了,它仍然没有显示int width=0的所有列;foreach(information.Columns中的DataGridViewColumn){width+=col.width;}width+=information.RowHeadersWidth;information.ClientSize=新尺寸(宽度+100,高度+100);它仍然不起作用。列是在运行时创建的,这是一个问题“它不工作”是什么意思?会发生什么?尺寸不变吗?你有没有设置断点?在尝试更改控件大小之前,是否确定宽度变量的宽度正确?我需要更多的信息,而不是“它不起作用”。对不起,我已经做了半个小时了。无论如何,大小从756变为846,但是仍然没有显示两列。您是否有为DataGridView标识的最大大小?这可能会阻止您根据需要调整其大小。另一个想法是在设置AutoSizeColumnMode后,强制DataGridView重新绘制自身。很可能当您获得列的宽度时,它们还没有调整大小。除此之外,我概述的步骤应该足以满足您的需求。我怀疑你还有什么奇怪的事。很抱歉,今晚我帮不了你什么忙-我在智能手机里,面前没有编译器。我在回答中添加了示例代码,这表明我告诉你的在一个简单的示例中是有效的。如果这对你有帮助,请记得投票并接受我的回答。