gpt4 book ai didi

c# - TableLayoutPanel:删除行

转载 作者:行者123 更新时间:2023-11-30 13:38:29 27 4
gpt4 key购买 nike

我有一个 TableLayoutPanel,它在运行时使用文本文件填充行(从文本文件中获取每一行,并将其放入新行中包含的单元格中)。代码看起来像这样:

public static string UrlList= @"C:\Users\Berisha\Desktop\URLs.txt";
string[] UrlRows = System.IO.File.ReadAllLines(@UrlList);
private void InitPaths()
{
int a = 0;
int c = 1;
while (a < UrlRows.Length-1)
{
//new label
var label = new Label();
label.Dock = DockStyle.Fill;
label.AutoSize = false;
label.Text = UrlRows[a];
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
label.Size = new System.Drawing.Size(22, 13);
label.BackColor = System.Drawing.Color.Transparent;
TBP.Controls.Add(label, 3, c); //Add to TableLayoutPanel
a++;
c++;
}
}

虽然我希望能够手动编辑源码,所以我写了一个方法来删除所有新创建的东西,但似乎卡在这里,因为它不起作用:

        private void clearPaths()
{
int c = UrlRows.Length - 1;
while (c <= UrlRows.Length - 1)
{
TBP.RowStyles.RemoveAt(c); //Remove from TableLayoutPanel
c--;
}

}

//代码停止于:TableLayoutPanel.RowStyles.RemoveAt(c);(调试时)//错误显示为:“未将对象引用设置为对象的实例”更新:我设法摆脱了错误,我现在的问题,在我说 RemoveAt 之后,似乎没有任何东西被删除有人知道我能做什么吗?

最佳答案

我在 Google 上搜索并搜索了 DAYS 这个问题的解决方案,但没有找到。我终于想出了一个可行的解决方案!

tableLayoutPanel.SuspendLayout();

while (tableLayoutPanel.RowCount > 1)
{
int row = tableLayoutPanel.RowCount - 1;
for (int i = 0; i < tableLayoutPanel.ColumnCount; i++)
{
Control c = tableLayoutPanel.GetControlFromPosition(i, row);
tableLayoutPanel.Controls.Remove(c);
c.Dispose();
}

tableLayoutPanel.RowStyles.RemoveAt(row);
tableLayoutPanel.RowCount--;
}

tableLayoutPanel.ResumeLayout(false);
tableLayoutPanel.PerformLayout();

在我的解决方案中,我不想删除第一行。

关于c# - TableLayoutPanel:删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com