C# TableLayoutPanel 添加、删除一行数据案例
来源:互联网 发布:宽带有网络wifi连不上 编辑:程序博客网 时间:2024/06/14 21:12
案例需求:利用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; } }}
效果图:
0 0
- C# TableLayoutPanel 添加、删除一行数据案例
- C# TableLayoutPanel 一个很实用的案例
- TableLayoutPanel控件动态删除一行,贴出来分享一下
- jquery动态添加删除一行数据
- mysql如何删除或者添加一行数据
- c# TableLayoutPanel控件应用 动态添加控件及事件
- c# TableLayoutPanel控件应用 动态添加控件及事件
- js实现简单的动态添加或删除一行数据
- 关于C#winform中tableLayoutPanel动态删除和动态加载一行
- c# datatable删除一行
- TableLayoutPanel删除行
- C#删除文本文档的任意一行数据
- C# winform 实现删除文件中数据的一行
- DataGridView删除一行数据
- c# winform给dataGridView添加值,插入值,填值,添加数据,添加一行,插入一行数据
- 按钮触发table添加一行删除一行
- js 动态表格添加一行删除一行
- js指定tr添加一行,删除一行
- 手写代码实现EventBus
- java三大框架
- 在CentOS 7下安装Nginx
- SpringMVC数据校验
- Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
- C# TableLayoutPanel 添加、删除一行数据案例
- javanio学习
- servlet执行流程和生命周期
- Redhat和suse进入单用户模式
- js学习小结
- thinkphp中的url参数传值问题
- Java开发者常犯的10个错误
- JavaScript 函数
- Android的manifest文件中的application中的android:supportsRtl="true"