如何调整datagrid的大小

时间:2012-09-25 00:34:07

标签: c# winforms datagrid

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

2 个答案:

答案 0 :(得分:0)

简单的操作顺序:

  1. 将DataGridView的AutoSizeColumnMode属性设置为AllCells。
  2. 添加所有列的Width属性以及控件上边框的额外宽度等等(可能加2)
  3. 将DataGridView的Width属性设置为您计算的宽度。
  4. 将表单的宽度设置为DataGridView的宽度。
  5. 由你来实际编码。

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

    进入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;