利用TableLayoutPanel动态添加一行,和删除一行

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DSkin.Controls;namespace TestForm
{public partial class Form2 : Form{public Form2(){InitializeComponent();}TableLayoutPanel table = new TableLayoutPanel();private void Form2_Load(object sender, EventArgs e){// 默认添加一行数据table.Dock = DockStyle.Top;panel2.Controls.Add(table);// table.RowCount++;table.ColumnCount = 4;table.Height = table.RowCount * 40;int step = 100 / table.ColumnCount;table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, step));table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, step));table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, step));table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, step));for (int ii = 0; ii < table.RowCount; ii++){table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40));}}/// <summary>/// 添加一行/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){// 动态添加一行table.RowCount++;//设置高度table.Height = table.RowCount * 40;// 行高table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40));// 设置cell样式,table.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;int i = table.RowCount - 1;// 添加控件CheckBox p = new CheckBox();p.Anchor = AnchorStyles.None;p.TextAlign = ContentAlignment.MiddleCenter;table.Controls.Add(p, 0, table.RowCount-1);p.Text = "" + i; ;TextBox name = new TextBox();name.Text = "name-"+i;name.Anchor = AnchorStyles.Left | AnchorStyles.Right;name.TextAlign = HorizontalAlignment.Center;table.Controls.Add(name, 1, i);TextBox inc = new TextBox();inc.Anchor = AnchorStyles.Left | AnchorStyles.Right;inc.TextAlign = HorizontalAlignment.Center;inc.Text = "in-" + i;table.Controls.Add(inc, 2, i);TextBox outc = new TextBox();outc.Anchor = AnchorStyles.Left | AnchorStyles.Right;outc.TextAlign = HorizontalAlignment.Center;outc.Text = "out-" + i;table.Controls.Add(outc, 3, i);}/// <summary>/// 删除一行/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){// 行数int row = 0;for (int i = 0; i < table.Controls.Count; i++){Control ctl = table.Controls[i];// 默认CheckBox为行首控件if (ctl.GetType().ToString().Contains("CheckBox")){CheckBox rb = (CheckBox)ctl;if (rb.Checked){// 删除当前行的所有控件for (int j = 0; j < table.ColumnCount;j++ ) {table.Controls.RemoveAt(i);}// 移动,当前行row的下行往上移动for (int k = row; k < table.RowCount-1;k++ ){Control ctlNext = table.GetControlFromPosition(0, k + 1);table.SetCellPosition(ctlNext, new TableLayoutPanelCellPosition(0, k));Control ctlNext1 = table.GetControlFromPosition(1, k + 1);table.SetCellPosition(ctlNext1, new TableLayoutPanelCellPosition(1, k));Control ctlNext2 = table.GetControlFromPosition(2, k + 1);table.SetCellPosition(ctlNext2, new TableLayoutPanelCellPosition(2, k));Control ctlNext3 = table.GetControlFromPosition(3, k + 1);table.SetCellPosition(ctlNext3, new TableLayoutPanelCellPosition(3, k));}//移除最后一行,最后为空白行table.RowStyles.RemoveAt(table.RowCount - 1);table.RowCount = table.RowCount - 1;break;}row++;//行数加加}}// 重新计算高度,否则最后一行偏大table.Height = table.RowCount * 40;}}
}

C# TableLayoutPanel 添加、删除一行数据案例相关推荐

  1. 解析postgresql 删除重复数据案例

    这篇文章主要介绍了postgresql 删除重复数据案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下 1.建表 /*Navicat Premium ...

  2. java删除jtable一行的值_JTable中删除一行数据

    Jtable中删除一行数据: import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; i ...

  3. js实现简单的动态添加或删除一行数据

    实现代码如下: <script type="text/javascript"> $(function(){ // 动态添加(此处未加样式图片路径等) //var li= ...

  4. 从mysql数据库中删除一行数据_mysql数据库删除一行数据

    [MySQL]命令行工具和基本操作 原文:[MySQL]命令行工具和基本操作 一 MySQL命令行工具  (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有G ...

  5. java jdbc 删除_java使用jdbc实现各种类型添加删除修改数据

    项目描述 上次为大家分享了使用jdbc实现各种类型查询数据,这次为大家分享使用jdbc实现各种类型添加.删除.修改数据 运行环境 jdk8+tomcat7+mysql 项目技术(必填) jdbc+da ...

  6. c# xml添加 删除 修改数据

    //首先添加一个xml文件,一定要先手动添加一个根结点,否则程序找不到根结点 //<user></user> using System; using System.Data; ...

  7. 用js实现动态添加删除表格数据

    代码如下: <!DOCTYPE HTML> <html> <head> <meta charset = "UTF-8"> <t ...

  8. JavaScript 数组索引添加删除操作小案例

    1. 打印原数组 // 数组var arr = ['周深','邓紫棋','李荣浩','薛之谦']console.log(arr) 在arr数组中末尾添加数据(pusht:方法可向数组的末尾添加一个或多 ...

  9. datatable删除一行数据

    数据如下: TransactionID TransactionDT 2987000 86400 2987001 86401 代码如下: import datatable as dt folder_pa ...

最新文章

  1. 比特币的货币属性是什么?
  2. signature=07d53df34494bb51485d7f5988447796,android – Progaurd问题“警告:忽略一个匿名内部类的InnerClasses属性”...
  3. 微信淘宝等平台要互通!?腾讯阿里字节回应
  4. ThinkPHP5如何引用新建的配置文件?
  5. And seeing the whole machine market
  6. 如何解决“本地编辑,更新时传入删除”消息
  7. ITIL好看不好吃?(二)
  8. 拓端tecdat|R语言多臂试验 - 我们应该考虑多重性吗?
  9. DHML+XML+CSS 技术汇总
  10. csgo自建局域网服务器,csgo怎么创建局域网游戏
  11. PMBOK 49过程 ITTO和4W1H(第六版)
  12. 全面对战LILO 和 GRUB
  13. 01.04_计算机基础知识(键盘功能键和快捷键)
  14. 农产品商铺商城小程序(JavaSSM+微信小程序)
  15. Python爬虫:抓取多级页面数据
  16. c#代码转python代码工具_Python至C#代码转换
  17. 论文中文翻译——Double-Fetch情况如何演变为Double-Fetch漏洞:Linux内核中的双重获取研究
  18. DNSPod吴洪声:国外域名注册商域名不许国内解析
  19. JSP语言做简易留言板
  20. Kali-Linux 永久获得超级用户权限

热门文章

  1. linux上wps能云同步吗,Linux版WPS管理云端文档
  2. GlassFish 任意文件读取复现
  3. 液压系统管路流速推荐表_液压系统的几种管路
  4. gazebo中使用自定义图片建立带纹理的地面模型方法
  5. 网站的SEO优化(提高搜索引擎收录,类似百度)
  6. 日本IT工程师的长短处
  7. VSCode 插件安装:中文(简体)语言包(附带:不生效解决方案)
  8. .net mvc 页面(静态页面)播放 .264格式视频文件
  9. mq服务器端口配置文件,Centos6.8 rabbitmq搭建且修改默认端口
  10. 用 Python 将音频内容转换为文本格式