【问题标题】:DataGridView , Adjusting width and height to DataTableDataGridView , 调整 DataTable 的宽度和高度
【发布时间】:2011-04-25 22:38:50
【问题描述】:

我正在将 DataTable 绑定到 GridView。它不会调整到 DataTable 的高度和宽度。如果行数很少,如何拉伸显示所有列的网格宽度和缩小高度。

【问题讨论】:

    标签: c# .net ado.net datagridview


    【解决方案1】:

    只需转到数据网格的属性 =>

    然后在布局部分=>

    AutoSizeColumnsMode 将其设置为 Fill...

    【讨论】:

    • this.ApplicationObjectRecords.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;这是为了避免未使用的列空间而不是行空间。
    • @Thomas VT:谢谢你,你拯救了我的一天。
    【解决方案2】:

    要自动调整列大小以适应数据(宽度方向),然后自动调整表单大小以适应网格视图(宽度方向),请使用以下代码:

    foreach (DataGridViewColumn column in dataGridView1.Columns)
                    column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    
    this.Width = dataGridView1.Width + 100;
    

    其中 dataGridView1 是本例中 Datagridview 的名称,this 指的是表单的实例。 100 是一个常数,表示您希望表单比 datagridview 宽多少像素。 (注意:您可能需要一些宽度检查以确保您的表格和数据网格视图不比用户的屏幕宽)

    要自动调整 datagridview 的大小以适应行(高度),然后自动调整表单大小以适应 gridview(高度),请使用以下代码:

    int totalRowHeight = dataGridView1.ColumnHeadersHeight;
    
    foreach (DataGridViewRow row in dataGridView1.Rows)
        totalRowHeight += row.Height;
    
    dataGridView1.Height = totalRowHeight;
    this.Height = dataGridView1.Height + 100;
    

    其中 dataGridView1 是本示例中 Datagridview 的名称,this 指的是表单的实例。 100 是一个常数,表示您希望表单比 datagridview 高多少像素。 (注意:您可能需要一些高度检查以确保您的表格和数据网格视图不高于用户的屏幕)

    【讨论】:

    • 答案的第一部分使列适合数据网格的内容,但使数据网格适合其内容(~= 列)。跨度>
    【解决方案3】:

    首先,您的表单必须足够大,才能让 DataGridView 展开并显示所有列。在屏幕截图中,它看起来不够宽。您可以手动设置 datagridview 的大小,但您在设计时很少知道每列的确切宽度,因为您不知道在运行时每列的宽度。例如,您的 Invoicedescription 列可能包含长度不同的字符串。

    在像您这样的情况下,我通常会在表单上放置一个拆分器控件。顶部的文本框和“导入发票”按钮将位于拆分器控件的顶部面板中,而 DataGridView 将位于底部面板中。然后,设置 DataGridView 的 Dock 属性以填充拆分器控件的底部面板。这样,当用户调整表单大小时,DataGridView 将随之增长/缩小。

    您可以通过设置 DataGridView.AutoResizeRows 属性进一步控制列的显示方式。

    只是将其作为一个选项,我不知道有任何方法可以让网格自动调整其显示的数据大小。您也许可以计算行的高度/宽度,然后在代码中手动调整网格的大小,但我会确保我确实首先需要这个要求。

    【讨论】:

      【解决方案4】:

      这是假设所有行都具有相同的高度,即使第一个标题行具有不同的高度(例如长标题被包装)

      If List.RowCount = 0 Then
        List.Height = 0
      ElseIf List.RowCount = 1 Then
        List.Height = List.ColumnHeadersHeight
      Else
        List.Height = List.ColumnHeadersHeight + List.Rows(1).Height * (List.RowCount + 1)
      End If
      

      【讨论】:

        【解决方案5】:

        将 datagridviewautosizecolumn 设置为“All” 然后,在包含 datagridview 的表单中,假设您根据需要在加载事件处理程序或其他一些事件处理程序中填充数据网格视图,无论加载数据(必须在加载数据之后)类型:(VB)

        Me.Width = DataGridView1.Width + 50 ' Number of pixels wider than the datagridview you want the form to be.

        datagridview1 是您的datagridview 控件的名称。 Me 指的是包含datagridview 控件的表单。

        您可能需要最大化窗口或将其锚定到顶部和左侧以确保适合,具体取决于填充的数据集的大小。

        【讨论】:

          【解决方案6】:

          我知道这可能已经回答了,但以防万一我在这里发布帮助我通过 AllCells 自动调整整个数据网格视图的内容:

          加载数据源后,粘贴以下内容

          dataGridView1.AutoResizeColumns();
          dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
          

          【讨论】:

            【解决方案7】:

            我在 IronPyhton 中使用它来适应桌子

            1:LayoutPanel.AutoSize = True 2:dataGridView.AutoSize = True 3:self.AutoSize = True

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-01-27
              • 2018-10-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多