我在winform中有一个datagridview,想做两件事。调整数据网格的大小,以便根据数据网格大小显示所有列(无滚动),调整winform的宽度。
尝试了下面的代码,但它不起作用*
int width = 0;
foreach (DataGridViewColumn col in information.Columns)
{
width += col.Width;
}
width += information.RowHeadersWidth;
information.ClientSize = new Size(width + 100,height);
答案 0 :(得分:0)
简单的操作顺序:
由你来实际编码。
编辑:我现在在编译器前面所以我把它放在一起:
进入Visual Studio。开始一个新项目。不要在设计师的表格上放任何东西。只需在初始化程序中使用此代码即可。
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;
}
此代码创建一个包含五列的DataGridView
,然后完全按照您的要求调整控件和表单的大小。我按照上面列出的确切步骤进行了操作(步骤1除外,因为我的列中没有任何数据)。
此代码有效。所以,如果你的工作没有用,那么你必须有一些愚蠢的事情,我无法帮助你。
答案 1 :(得分:0)
您好我发现如何使用下面的代码使其正常工作。信息是数据网格,这是表格。
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;