WinForm小技巧之向下复制行和编辑行

2024-08-31 01:44

本文主要是介绍WinForm小技巧之向下复制行和编辑行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WinForm小技巧之向下复制行

文章目录

  • WinForm小技巧之向下复制行
  • 场景
  • 代码
  • 编辑
    • 场景
    • 代码


场景

在这里插入图片描述
当我点击向下增加行按钮,会在表格中添加一行一摸一样的

代码

按钮点击事件

/// <summary>/// 向下新增/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void addSpaceBtn_Click(object sender, EventArgs e){// 假设你的DataGridView的数据源是一个DataTableDataTable dt = (DataTable)dataGridView_machine.DataSource;// 获取最后一行的数据DataRow lastRow = dt.Rows[dt.Rows.Count - 1];// 在DataTable中添加一个新行DataRow newRow = dt.NewRow();string condition = " set ";//用于添加字段var para = new List<MySql.Data.MySqlClient.MySqlParameter>();// 将最后一行的数据复制到新行for (int i = 0; i < lastRow.ItemArray.Length; i++){string columnName = dt.Columns[i].ColumnName;if (!columnName.Equals("ID")){newRow[columnName] = lastRow[columnName]; // 使用列名来设置新行的值para.Add(new MySql.Data.MySqlClient.MySqlParameter(columnName, newRow[columnName]));}}//id 自增一string sqlmaxid = String.Format("select max(ID) as maxId from {0}", Table_lab_test_schedule.table_name);var maxid = DataBase.Get_LabratoryManage(sqlmaxid);int ID = int.Parse(maxid.Rows[0]["maxId"].ToString()) + 1;para.Add(new MySql.Data.MySqlClient.MySqlParameter(Table_lab_test_schedule.ID, ID.ToString()));// 将新行添加到DataTabledt.Rows.Add(newRow);//添加数据库string sql = String.Format("insert into {0} ({1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25},{26},{27},{28},{29},{30},{31})values(@{1},@{2},@{3},@{4},@{5},@{6},@{7},@{8},@{9},@{10},@{11},@{12},@{13},@{14},@{15},@{16},@{17},@{18},@{19},@{20},@{21},@{22},@{23},@{24},@{25},@{26},@{27},@{28},@{29},@{30},@{31})", Table_lab_test_schedule.table_name, Table_lab_test_schedule.keshi, Table_lab_test_schedule.Type, Table_lab_test_schedule.jinji, Table_lab_test_schedule.mingcheng, Table_lab_test_schedule.shuxing, Table_lab_test_schedule.User, Table_lab_test_schedule.Xinghao, Table_lab_test_schedule.Test_from, Table_lab_test_schedule.Test_to, Table_lab_test_schedule.No, Table_lab_test_schedule.Quatity, Table_lab_test_schedule.tiaojian, Table_lab_test_schedule.jieshoudate, Table_lab_test_schedule.Tester, Table_lab_test_schedule.Jihua_from, Table_lab_test_schedule.Jihua_to, Table_lab_test_schedule.Yuchuli_Mach, Table_lab_test_schedule.Yuchuli_from, Table_lab_test_schedule.Yuchuli_to, Table_lab_test_schedule.Test_Mach, Table_lab_test_schedule.Check_Mach, Table_lab_test_schedule.Check_from, Table_lab_test_schedule.Check_to, Table_lab_test_schedule.result, Table_lab_test_schedule.yichang, Table_lab_test_schedule.storeplace, Table_lab_test_schedule.storestate, Table_lab_test_schedule.tuiyangamount, Table_lab_test_schedule.tuiyangremark, Table_lab_test_schedule.Pause, Table_lab_test_schedule.ID);if (!DataBase.Deal_LabratoryManage(sql, para.ToArray())){new WarningDialogForm("操作失败!").ShowDialog();return;}// 更新DataGridView以显示新添加的行dataGridView_machine.DataSource = null; // 清除数据源绑定dataGridView_machine.DataSource = dt;   // 重新绑定数据源LoadTable();//重新加载数据}

编辑

场景

在这里插入图片描述

代码

给单元格添加事件

 /// <summary>/// 用户编辑单元格结束/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void dataGridView_machine_CellEndEdit(object sender, DataGridViewCellEventArgs e){// 获取当前编辑的单元格DataGridViewCell cell = dataGridView_machine[e.ColumnIndex, e.RowIndex];// 获取编辑的列名string columnName = dataGridView_machine.Columns[e.ColumnIndex].Name;if (columnName.Equals("check")){return;}// 获取单元格所在的行DataGridViewRow row = dataGridView_machine.Rows[e.RowIndex];//获取流水号string ID = row.Cells[Table_lab_test_schedule.ID].Value.ToString();string sql = $"update {Table_lab_test_schedule.table_name} set {columnName}='{cell.Value}' where {Table_lab_test_schedule.ID}='{ID}'";// 获取行数据//string columnName1 = row.Cells["ColumnName1"].Value.ToString();// string columnName2 = row.Cells["ColumnName2"].Value.ToString();// ... 获取其他列的数据if (!DataBase.Deal_LabratoryManage(sql)){new WarningDialogForm("操作失败").ShowDialog();return;}//LoadTable();}

这篇关于WinForm小技巧之向下复制行和编辑行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122532

相关文章

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

python中的整除向下取整的操作方法

《python中的整除向下取整的操作方法》Python中的//是整数除法运算符,用于执行向下取整的除法,返回商的整数部分,不会四舍五入,它在分治法、索引计算和整数运算中非常有用,本文给大家介绍pyth... 目录1. // 的基本用法2. // vs /(普通除法)3. // 在 mid = len(lis

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触