C#编程相关
积跬步、至千里
996是常态,深信一万小时定律。嵌入式软件,工控上位机软件,winform ,QT ,欢迎私信交流
展开
-
C#多线程操作:线程间操作无效,从不是创建控件的线程访问它
UI对象的操作一定要在产生该UI对象的线程里进行Form类有一个bool类型的属性InvokeRequired,可以通过它查看当前线程是否为创建该Form对象的线程(UI线程)——如果为true,则表示当前线程不是UI线程,反之则是。TestForm里有两个需要注意的方法,UIThread——用来模拟UI线程,WorkerThread——用来模拟用户线程,UIThread中实例化了成员form...原创 2020-04-13 15:14:06 · 1882 阅读 · 0 评论 -
C#中Invoke的用法---------多线程操作:线程间操作无效,从不是创建控件的线程访问它
设计一个界面,点击button之后,改变label的值实现:点击button执行button的click事件,在函数下创建一个线程change,然后在这个线程中执行改变label的方法ChangeLabel();说明:控件是在UI主线程中创建的,进入控件的事件响应函数时,是在控件所在的线程,并不是主线程。在控件的事件响应函数中改变控件的状态,可能与主线程发生线程冲突。若直接用以下的写法,必...原创 2020-04-13 20:13:50 · 1993 阅读 · 0 评论 -
【C#绘制区域】C# pictruebox 划线绘制区域
C# 利用pictruebox 绘制区域原创 2022-07-26 10:23:57 · 1581 阅读 · 4 评论 -
c# 读写二进制文件
**实现:讲将puba.bin 中的二进制内容保存为,二进制数,命名为mydata.bin注意:原来是0,存储为0x00过程:读取 b8 f7 4a ……………… 保存为string 类型将上边的string 类型中的0,存为16进制的0x00保存为字符串信息保存为二进制文件** private void button1_Click(object sender, EventArgs e) { string strz = @"C:\Re原创 2022-04-14 09:14:59 · 3214 阅读 · 0 评论 -
C#委托解决不同对象之间的传值或者方法调用
C#委托技术有很多作用,以下是一个简单的实例完成C#委托解决不同对象之间的传值或者方法调用的问题:假设想想实现以下功能:从主窗体中创建2个子窗体,想把2个子窗体的信息发送到主窗体中,并在主窗体中显示,在子窗体中输入想发送的信息,点击子窗体中的发送信息,主窗体直接显示子窗体发送的信息假设主窗体为A,子窗体为B,从A中创建出2个B,而B窗体又想调用A窗体中的方法,你中有我,我中有你,混乱!!B是A中的一个对象,B是不能调用A的方法的利用以下步骤:首先在A中声明委托原型 public delegat原创 2021-10-06 22:19:48 · 1112 阅读 · 0 评论 -
C# 连接OleDb数据库报错问题
在程序代码都无错误的情况下,C#一直无法访问Acess数据库并出现以下报错:1.未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序2.ServerVersion = “oleDbConnection.ServerVersion”引发了类型“System.InvalidOperationException”的异常解决:项目属性原来是这样,将目标平台更改为x64之后,便可以正常连接...原创 2021-04-07 07:41:02 · 1259 阅读 · 0 评论 -
基于.NET实现高效ORM自定义开发(学习笔记)
基于.NET实现高效ORM自定义开发学习视频链接https://www.bilibili.com/video/BV1zT4y137TR?p=1常老师讲解的通俗易懂一、关于ORMORM:(Object Relation Mapping) 对象关系映射因为我们开发的软件绝大部分是基于数据库开发的,因此一定会涉及到数据库访问技术在.NET平台典型的数据库访问技术是基于ADO.NET,特点是效率非常高,但是在开发的效率上有局限性ORM框架解决的问题:为开发者自动生成AQL语句和参数封装的任务其他原创 2021-03-28 11:47:43 · 293 阅读 · 0 评论 -
C#十六进制和十进制有符号数值转换-----int和uint类型之前的转化
C# int和uint类型之前的转化在编写串口协议时遇到十六进制和十进制数值之间的转化目的是把四个字节的十六进制数值拼接转化为十进制数,但是当十进制数是负数的时候,怎么解决呢?首先,四字节表示的有符号数的范围是-2^31 到(2^31) -1十六进制十进制00,00,27,1010000FF,FF,D8,F0-10000但是用以下程序转化时,程序默认FF,FF,D8,F0转为无符号的十进制4,294,957,296string byte1 = receivedD原创 2021-01-08 14:39:08 · 4516 阅读 · 0 评论 -
C#在上位机端实现对数据库的备份
本文重要实现2个功能:1.实现在上位机端通过界面实现对数据库备份为.back文件,2.在数据库SQL 2012中实现还原(.back文件是一种备份文件)一、上位机端数据库的备份实现首先设计以及简单的界面,包括3个button,一个textBox,一个label以下 是整个UI界面的cs文件,整个核心是 BackUpData()处理函数 //------------选择路径----------------- private void btnChoose_Click(objec原创 2020-08-27 10:39:30 · 905 阅读 · 0 评论 -
SqlCommand的三种方法以及封装SqlHelper类
SqlCommand的三种方法:执行时必须保证SqlConnection是处于open状态ExecuteNonQuery 执行T-SQL,返回受影响的行数 。 增、删、改的通用方法ExecuteScalar 执行查询,返回结果集的第一行第一列数据ExecuteReader 执行查询,生成SqlDataReader构建一个SqlCommand参数说明:conn:连接对...原创 2020-04-24 10:36:20 · 968 阅读 · 4 评论 -
C#使用读取配置文件的方法连接数据库
首先,添加引用System.Configuration在代码中,写连接字符串:using System.Configuration;//写连接字符串private string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;在App.Config写相关信息<?xml v...原创 2020-04-24 10:10:20 · 2038 阅读 · 0 评论 -
SqlCommand介绍
public SqlCommand(string cmdText, SqlConnection connection, SqlTransaction transaction);重要属性:Connection: SqlCommand对象使用的SqlConnectionCommandText: 获取或设置要执行的T-SQL语句或者存储过程名CommandType: Com...原创 2020-04-24 09:43:47 · 709 阅读 · 0 评论 -
C# 中SqlTransaction--启动事务 先删除从表,再删除主表
事务的基本原理介绍msdn中的解释:***https://docs.microsoft.com/zh-cn/dotnet/api/system.data.sqlclient.sqltransaction?view=netframework-4.8 ***事务是将一系列操作作为一个单元执行,要么成功,要么失败,回滚到最初状态。只要有一个参与者无法做出此保证,整个事务就会失败。事务范围内的所有数...原创 2020-04-12 17:51:42 · 1216 阅读 · 0 评论 -
C#使用Action委托的方法解决跨页面信息刷新的问题
关于Action委托的用法,请参考博文:https://www.cnblogs.com/champaign/p/5889608.html在一个项目实例中,需要解决以下问题:在学生列表界面点击“修改”,弹出学生信息编辑界面,点击编辑界面的“修改”按钮,将该学生的信息成功修改并传入数据库。同时StudentList界面中的datagridview控件中的信息也即刷新成修改后的信息。涉及到了跨页面...原创 2020-04-12 12:59:48 · 1549 阅读 · 0 评论 -
使用invoke方法解决跨线程访问的问题
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。如果从另一个线程调用控件的方法,那么必须使用控件的一个 Invoke 方法来将调用封送到适当...原创 2020-04-10 19:10:01 · 2135 阅读 · 0 评论 -
忽略跨线程访问的错误 CheckForIllegalCrossThreadCalls = false
CheckForIllegalCrossThreadCalls = false允许跨线程访,但是此不稳定,要慎用设置一个如下的界面,点击“button1”,改变label的值,改变label值是通过建立一个线程启动线程执行方法实现改变的,当在button的click事件函数里不加CheckForIllegalCrossThreadCalls = false这句话的时候,默认不允许跨线程访问,用.........原创 2020-04-10 18:55:54 · 4634 阅读 · 1 评论 -
在DataGridView中对数据进行修改,并更新到sql数据库
实现思路:在DataGridView中对数据进行修改,先弹出修改界面,显示修改之前的信息,然后在修改页面上,进行修改并更新到数据库中**一、点击“修改”,弹出修改界面并在界面上显示所选中行的信息**在页面中点击“修改”,弹出修改页面,并且自动在修改页面中显示出需要修改的行的信息实现过程:1.点击“修改”,获取鼠标选中的学生号,并把该值传入新窗体(信息修改界面),新窗体根据 St...原创 2020-04-08 21:12:40 · 9830 阅读 · 5 评论 -
在DataGridView中对数据进行多行删除,并更新到sql数据库
上一篇博文详细介绍了在DataGridView中对数据进行删除,以真删除和假删除为例进行了演示,具体请参考:https://blog.csdn.net/qq_39217004/article/details/105366769在DataGridView中对数据进行多行删除,并更新到sql数据库下面演示在控件上实现对数据的多行删除:(以假删除位列说明,真删除只需要更改sql语句即可)演示的结...原创 2020-04-08 16:25:15 · 1588 阅读 · 0 评论 -
在DataGridView中对数据进行删除(真、假删除法),并更新到sql数据库
首先介绍原创 2020-04-08 10:22:05 · 3831 阅读 · 1 评论 -
C# 在DataGridView中添加Link列和CheckBox复选框列--------19. 学生列表的修改与删除(P21)
添加之前和添加之后的效果如下图1 添加之前2.添加之后具体操作步骤如下所示:1.右键控件,选择“编辑列”,选择添加列,选择DataGridViewLinkColumn,编辑好名称和文本点击确定2.增加两个link列,分别为删除和修改3.修改DefaultCellStyle中的NullValue数据为你所添加的link列的名称4.再增加一个复选框类型的列,5.点移动按钮...原创 2020-04-07 15:23:51 · 1356 阅读 · 2 评论 -
界面异常捕获 ---在创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke
@坏坏Dong在项目中遇到问题,在创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke的问题。在项目过程中,在Visual Studio中调试的时候,程序在运行过程中经常有这个错误,整个界面异常。且出错时间无规律,有时候几天没有错误,有时候运行频繁报错;且本界面运行的时候,会占用到CPU90%以上的资源,造成有时候界面很卡顿。程序员经常说“「我爱你」三个字,讲出来只要三秒钟,...原创 2020-04-02 22:20:10 · 897 阅读 · 0 评论 -
C#读取数据库提示对象“xxxx”无效
@好好zhang先生上位机可以打开数据库但是无法读取数据上位机能正常连接数据库,因为代码conn.Open();能正常执行但是在C#执行查询功能的时候,报错,对象名“UserInfos”无效,在SQL中,利用查询语句,也能正确查找到相应的数据select GradeId,GradeName from GradeInfo这个问题简直把人逼疯了,最终的解决方案如下:首先,以sa管理员...原创 2020-03-31 19:55:49 · 1162 阅读 · 0 评论 -
C# 删除二维数组中的指定的元素并改变数组长度
@好好zhang先生关于C#二维数组的处理自己查找资料发现跟自己的项目需要不匹配。做LED分拣项目过程中遇到这样一个问题,需要将芯片预扫描的二维数组中的所有(0,0)数据删除并改变数组的读,通俗地讲就是比如Arrya[10,2]数组,10行2列数据,假设数组中有5个(0,0)数据;则需要将5个数据删除并吧原来的数据按原来顺序排序并生成一个Arryc[5,2]长度的数组。下面把自己的思路总结如...原创 2020-03-31 11:44:40 · 2506 阅读 · 0 评论