TableLayoutPanel控件动态删除一行,贴出来分享一下

来源:互联网 发布:javaweb就业前景 知乎 编辑:程序博客网 时间:2024/06/14 20:27

       private void btnDelSelect_Click(object sender, EventArgs e)
        {
            bool bOver = true;//删除结束标记
           
            REPEAT:
            if (tlpSelection.RowCount == 0) { return; }
            //遍历tlpSelections
            for (int i = 0; i < tlpSelection.RowCount; i++)
            {
                bOver = true;
                Control ctl = tlpSelection.GetControlFromPosition(0, i);               
                if (ctl.GetType().ToString().Contains("RadioButton"))
                {
                    RadioButton rb = (RadioButton)ctl;
                    if (rb.Checked)
                    {
                        bOver = false;//有勾选项就没有结束
                        tlpSelection.Controls.Remove(rb);

                        //将后面行往前面移
                        int iCnt = tlpSelection.RowCount - 1 - i;
                        for (int j = 0; j < iCnt; j++, i++)
                        {
                            Control ctlNext = tlpSelection.GetControlFromPosition(0, i+1);
                            tlpSelection.SetCellPosition(ctlNext, new TableLayoutPanelCellPosition(0, i));
                        }

                        //移除最后一行
                        tlpSelection.RowStyles.RemoveAt(tlpSelection.RowCount - 1);
                        tlpSelection.RowCount = tlpSelection.RowCount - 1;                      

                        break;//一行一行地删除
                    }
                }

            }
           
            if (bOver == false)
            {
                goto REPEAT;//由于删除一行后,行数有了变化,for循环就得从新开始执行
            }
          
        }

原创粉丝点击