1

我在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);
    
4

2 回答 2

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;
于 2012-09-26T14:46:55.367 回答
0

简单的操作顺序:

  1. 将 DataGridView 的 AutoSizeColumnMode 属性设置为 AllCells。
  2. 添加所有列的 Width 属性以及控件边框的额外宽度等的一些松弛(可能加 2)
  3. 将 DataGridView 的 Width 属性设置为您计算的宽度。
  4. 将窗体的宽度设置为 DataGridView 的宽度。

由你来实际编码。

编辑:我现在在编译器面前,所以我把它放在一起:

进入 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 步除外,因为我的列中没有任何数据)。

此代码有效。因此,如果您的工作不起作用,那么您肯定还有其他愚蠢的事情要做,我无法帮助您。

于 2012-09-25T00:50:59.090 回答