c# winform TableLayoutPanel 动态删除一行,动态添加行列

动态删除 TableLayoutPanel 的某一行
说明:TableLayoutPanel 动态删除一行要修改三处地方:
1.删除该行单元格内的控件
2.删除该行样式
3.设置行数量-1

如果只删除了行样式和行数量, 没有删除里面的控件,一样达不到删除效果。另外,改行删除后,改行位置会变成空白。需要将后面的行依次向上移动。

private void tableDeleteRow(TableLayoutPanel tableLayoutPanel1, int row)
{
     int column = tableLayoutPanel1.ColumnCount;

     // 删除该行单元格中的控件
     Control control;
     for (int j = 0; j < column; j++)
     {
         control = tableLayoutPanel1.GetControlFromPosition(j, row);
         tableLayoutPanel1.Controls.Remove(control);
     }

      // 删除该行样式
     tableLayoutPanel1.RowStyles.RemoveAt(row);
     // 行数设置 - 1
     tableLayoutPanel1.RowCount = tableLayoutPanel1.RowCount - 1;
 }

TableLayoutPanel 动态添加行列

      //添加行 横排

         ++this.tbPnl.RowCount;
            this.tbPnl.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));

            ++this.tbPnl.RowCount;
            this.tbPnl.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));    

            ++this.tbPnl.RowCount;
            this.tbPnl.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));           

    //添加列 竖排 
            ++this.tbPnl.ColumnCount;
            this.tbPnl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));

                  
            foreach (IPlugin plugin in plugins)
            {
                Label a = new Label();
                a.Text =plugin.Text;
                a.Anchor = System.Windows.Forms.AnchorStyles.None;
                this.tbPnl.Controls.Add(a, 0, 0);
            }

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Winform中的TableLayoutPanel是一个用于布局和控制子控件的容器控件。在TableLayoutPanel中,子控件以和列的形式排列。为了查询TableLayoutPanel的第一行第一列上是什么控件,我们需要遍历TableLayoutPanel的子控件并访问其位置属性。 首先,我们可以通过TableLayoutPanel的Controls属性获得所有的子控件。然后,我们可以通过使用GetCellPosition方法来获取子控件的位置信息,该方法接受一个子控件作为参数,并返回其在TableLayoutPanel中的和列的索引。 接下来,我们可以检查第一个子控件的位置信息,判断是否为第一行第一列。在TableLayoutPanel中,和列的索引从零开始计数。因此,如果第一个子控件位于第一行第一列,则其索引为0,列索引也为0。 最后,我们可以使用GetType方法获取第一个子控件的类型信息,从而确定第一行第一列上是什么控件。例如,如果第一个子控件是一个按钮,则我们可以通过GetType得到按钮的类型为System.Windows.Forms.Button。 综上所述,我们可以通过以上步骤来查询TableLayoutPanel一行第一列上的控件,并确定其类型。 ### 回答2: 要查询TableLayoutPanel一行第一列上的控件,可以通过以下代码实现: ```csharp // 假设TableLayoutPanel对象名为tableLayoutPanel1 // 如果第一行第一列上有控件,则可以通过Controls属性获取 if (tableLayoutPanel1.Controls.Count > 0) { // 第一个控件即为第一行第一列上的控件 Control firstControl = tableLayoutPanel1.GetControlFromPosition(0, 0); // 输出第一行第一列上的控件类型 Console.WriteLine("第一行第一列上的控件类型: " + firstControl.GetType().ToString()); } else { Console.WriteLine("第一行第一列上没有控件。"); } ``` 以上代码通过`GetControlFromPosition`方法可以获取指定单元格位置上的控件。由于TableLayoutPanel可以包含多个控件,所以首先需要判断该容器中是否有子控件。如果有子控件,则获取第一个控件并输出其类型;如果没有子控件,则输出“第一行第一列上没有控件”。 ### 回答3: 使用WinForm中的TableLayoutPanel控件可以实现表格布局。在查询TableLayoutPanel的第一行第一列上的控件时,可以使用如下代码进操作: 首先,获取TableLayoutPanel中的所有和列的数量,使用TableLayoutPanel的RowCount和ColumnCount属性获取: int rowCount = tableLayoutPanel.RowCount; // 获取数 int colCount = tableLayoutPanel.ColumnCount; // 获取列数 接下来,通过索引获取指定位置的控件,使用TableLayoutPanel的GetControlFromPosition方法: Control targetControl = tableLayoutPanel.GetControlFromPosition(0, 0); // 获取第一行第一列的控件 然后,判断获取到的控件是否为空,以及它的类型: if (targetControl != null) { string controlType = targetControl.GetType().ToString(); // 获取控件的类型名 // 根据具体情况进处理 } else { // 第一行第一列没有控件 } 最后,根据具体情况对获取到的控件进进一步操作。 需要注意的是,以上代码假设TableLayoutPanel中的每个单元格都只包含一个控件。如果某个单元格包含多个控件,可以根据具体需求进调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值