C# WinForms Large offset when adding rows to TableLayoutPanel

问题描述 投票:0回答:0

我正在开发 WinForms 应用程序。我有一个 TableLayoutPanel,它有一个添加行的按钮。一开始,有一排。但是当我第一次点击添加时,新行之前有一个很大的偏移量。 看:

哦,添加按钮的代码:

private void manual_packages_add_Click(object sender, EventArgs e) {
  static Size MulSize(Size sz, Size accord, int percent) {
    static float Percent(float n, int p) => n * (p / 100);

    SizeF origF = (SizeF)sz;
    SizeF accordF = (SizeF)accord;
    origF.Height += Percent(accordF.Height, percent);
    return origF.ToSize();
  }

  TextBox tbx = new() {
    Name = $"manual_packages_pkg{manual_nextPkgTbxIndex++}",
    Size = new((int)Math.Round(manual_packages_list.ColumnStyles[0].Width),
               (int)Math.Round(manual_packages_list.RowStyles[0].Height)),
    MaxLength = 34,
    BorderStyle = BorderStyle.Fixed3D,
  };
  Button rm = new() { Name = $"manual_packages_rm{manual_nextPkgTbxIndex}",
                      Text = "i suffer 💀💀💀💀💀" };
  manual_packages_list.Controls.Add(tbx, 0, ++manual_packages_list.RowCount);
  manual_packages_list.Controls.Add(rm, 1, manual_packages_list.RowCount);

  // sizing
  Control? container = tbx.Parent;
  bool firstIter = true;
  while (true) {
    container = firstIter ? container : container.Parent;
    if (container == null)
      break;
    container.Size = MulSize(container.Size, tbx.Size, 100);
    firstIter = false;
  }
}

更新

引起麻烦的人是 AutoSize 设置为关闭。我启用了它,然后...还有另一个问题。现在按钮关闭了。这是按下按钮后的屏幕截图(代码保持不变):

寻求帮助...

c# winforms tablelayoutpanel
© www.soinside.com 2019 - 2024. All rights reserved.