在 TabPages 上自动调整 DataGridView 列的大小

AutoResize DataGridView Columns on TabPages

我在使用 DataGridView 的 AutoResize 时遇到一点问题。 我是这样做的:

 for (int i = 0; i < list.Count; i++)
 {
      tabControl_Rozliczenie.TabPages.Add("Page " + list[i]);
      var dataGridView = new DataGridView()
      {
           Name = "dataGridView_" + list[i],
           Dock = DockStyle.Fill
      };

      dataGridView.CellValueChanged += 
              new DataGridViewCellEventHandler(dataGridView_ety_CellValueChanged);
      dataGridView.CellFormatting += 
              new DataGridViewCellFormattingEventHandler(dataGridView_ety_CellFormatting);
      dataGridView.DataSource = dataTable;

      tabControl_Rozl.TabPages[i].Controls.Add(dataGridView);
      dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 
      dgwList.Add(dataGridView);
 }

它在上面添加了新的 TabPages 和 DataGridViews 但是这部分:

 dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)

仅在 tabPage[0] = 第一页上的 DataGridView 自动调整大小,在其余页面上不起作用。

谁能帮我找出代码问题?

假设是:

它必须在每个 TabControlPage 上自动调整 DataGridView 的大小。

这只是瞎猜,如果没有帮助,我们深表歉意,但问题可能是您将 dataGridView 添加到控件列表,然后 然后更改 AutoResizeColumns 选项?您是否尝试过将顺序更改为:

dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
tabControl_Rozl.TabPages[i].Controls.Add(dataGridView);

?

TabControl 有一个讨厌的习惯,就是阻止 unselected TabPages 的 children 进行布局。

因此,在填充 DataGridView 并设置其 AutoResizeColumns 属性:

tabControl_Rozliczenie.TabPages.Add("Page " + list[i]);
tabControl_Rozliczenie.SelectedTab = tabControl_Rozliczenie.TabPages["Page " + list[i]];