![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c#
c#上位机
硕士,高级软件工程师,精通c#上位机开发,《C#串口通信从入门到精通》,《C# Modbus通信从入门到精通》,《winform控件从入门到精通》专栏作者,持续专注上位机软件开发,立志成为上位机软件开发领域领路人!
展开
-
winform开发中的几个坐标
当我们使用鼠标在控件上移动的时候,鼠标的位置相对于控件左上角的位置是不断发生改变的,下图中的白色鼠标的位置,相对于红色方框所指的蓝色控件的左上角在x方向距离90,y方向距离6,这个就是鼠标位置距离控件左上角的坐标,这个坐标可以通过控件的一些事件获取,比如MouseMove事件,该事件中,当鼠标在控件上移动时就会触发该事件,事件的MouseEventArgs 参数中可以通过e.Location属性来获取到鼠标距离控件左上角的坐标,代码如下。原创 2024-07-11 23:13:22 · 266 阅读 · 0 评论 -
C#异常捕获
在C#中,我们无法保证我们编写的程序没有一点bug,如果我们对于这些抛出异常的bug不进行任何的处理的话,那么我们的软件在抛出这些异常的时候就会崩溃,也就是软件闪退,并且这种闪退由于我们没有进行处理,导致闪退的原因我们也发现不了,这就是一个很严重的问题。当然在C#中我们也有相应的语法来应对这些异常,也就是try-catch 语句,try-catch用于处理在运行时可能发生的异常。我们可以在catch语句中捕获异常,然后对这些异常进行处理,比如用日志记录下异常等。原创 2024-06-30 13:12:46 · 359 阅读 · 0 评论 -
C#语法——ref和out关键字的使用
我们在C#开发中经常需要将一个参数传入一个方法,然后在方法内部改变这个参数的值,如果这个参数是引用类型,那么直接在方法中改变该参数的值,方法执行完以后该参数的值也会被改变;如果这个参数是值类型,那么在方法中改变该参数的值,方法执行完以后该参数的值是不会被改变的,ref 和out参数的作用就是将值类型的参数传入方法,并且在方法中改变该参数的值。原创 2024-06-26 19:52:31 · 467 阅读 · 0 评论 -
C#循环语句总结
每次增加1,循环10次。原创 2024-06-22 18:13:06 · 626 阅读 · 0 评论 -
C#中File类常见用法总结
我们在开发C#软件的过程中,经常需要和文件打交道,那么File类在C#中是我们使用非常频繁的一个类,本文就是详细介绍File类在C#中的常见用法。原创 2024-06-20 20:05:24 · 452 阅读 · 0 评论 -
c#string常用方法总结
/获取最后一个满足条件的字符串的索引获取最后一个‘2’的索引,结果就是6。原创 2024-06-19 20:22:46 · 395 阅读 · 1 评论 -
c#中switch case语句的用法
在c#中如果对于两种不同情况的处理,一般使用If else结构,但是对于3种及以上情况的处理最好使用switch case语句来增强代码的可读性,本文就是详细介绍switch case语句在c#中的常见应用。原创 2024-06-13 16:15:19 · 545 阅读 · 0 评论 -
c#数组的使用
我们在开发c#程序的过程中经常需要使用数组,这个数组就是用来存储多个值的一种数据类型。原创 2024-06-13 15:56:06 · 419 阅读 · 0 评论 -
c#调用 Path.GetDirectoryName报错,路径太长
在c#中调用 Path.GetDirectoryName时,软件报错,提示路径太长。将.netframework版本从4.6.1升级到4.7.2问题解决!原创 2024-06-08 17:45:35 · 161 阅读 · 0 评论 -
exe.config无法更新的解决
今天遇到一个很奇葩的问题,原因是接手的离职同事的代码,程序编译后,exe.config删掉以后,生成的一个exe.config居然是2022年的,现在是2024年,经过一番搜索,删除了obj文件中的一个exe.config后问题解决,所以最好不要用exe.config这个文件作为配置文件,坑太多了!原创 2024-05-24 16:11:54 · 217 阅读 · 0 评论 -
手把手教你在winform中将文本或文件路径拖到控件中
本文介绍如何在winform中将文本或文件路径拖到控件中原创 2023-05-09 23:53:12 · 1211 阅读 · 0 评论 -
手把手教你用几行代码给winform多个控件(数量无上限)赋值
本文教大家怎么用几行代码实现给winform中多个控件(几百上千个或者更多控件)同时赋值。原创 2023-04-26 22:58:43 · 1876 阅读 · 0 评论 -
Image.FromFile报错System.NotSupportedException:“不支持给定路径的格式。”的解决办法
这就发现问题了,fileName_Apple2在C这个字符前居然还有三个字符,说明这个字符串有问题,然后将鼠标光标移动到这里,删掉了那三个字符问题就解决了,神奇的是,我们看不出来那里有字符,但是实际上他有多余的字符。从表面看,fileName_Apple1 和fileName_Apple2 的值是相等的,然后奇怪的事情发生了,= Image.FromFile(fileName_Apple2);然后又改成了下述代码:将字符串的每个字符打印出来。原创 2023-04-10 20:10:13 · 1298 阅读 · 0 评论 -
收缩vs中的代码
收缩方法原创 2023-03-31 15:13:59 · 132 阅读 · 0 评论 -
c#使用递归替代goto来控制方法执行多次(优化代码,增强代码可读性)
优化c#代码原创 2023-03-09 14:45:40 · 253 阅读 · 0 评论 -
c#监视目录下的文件被更改
监视文件内容被改动原创 2023-01-13 13:14:50 · 280 阅读 · 0 评论 -
c#调用c++捕获SEH异常
c#如何捕获c++中SEH异常原创 2022-12-14 14:41:16 · 781 阅读 · 0 评论 -
Mysql——使用字符集以及校对
Mysql字符集以及校对内容总结原创 2022-11-23 22:29:04 · 1315 阅读 · 0 评论 -
c#与西门子PLC通信异常问题原因与解决方法
c#与西门子Plc通信的异常原因以及解决方法原创 2022-10-16 20:21:04 · 1856 阅读 · 0 评论 -
c#与西门子PLC通信教程
c#与西门子PLC通信教程原创 2022-10-16 20:13:41 · 2162 阅读 · 0 评论 -
c#字典dic的用法总结(包含线程安全与线程非安全字典)
c#中字典的用法原创 2022-08-15 23:40:05 · 734 阅读 · 0 评论 -
dev的treelist
treelist控件原创 2022-07-06 14:03:31 · 1391 阅读 · 0 评论 -
Dev的barmanager
dev原创 2022-06-11 20:39:20 · 195 阅读 · 1 评论 -
Dev的popupmenu
devexpress原创 2022-06-11 20:15:06 · 395 阅读 · 0 评论 -
Dev的gridControl的用法
1、不事先指定控件的列名DataTable dt = new DataTable(); dt.Columns.Add("姓名", typeof (string )); dt.Columns.Add("年龄", typeof(string)); dt.Rows.Add(new object[] { "小王", "16" }); dt.Rows.Add(new object[] { "小李", "25" });原创 2022-05-17 22:15:26 · 603 阅读 · 0 评论 -
Dev的searchLookUpEdit
新添加的searchLookUpEdit的Text属性值为[EditValue is null],并且无法直接通过修改Text属性来修改,而是可以通过修改它的Properties.NullText属性来修改,比如将该属性赋值为空,则为如下效果: searchLookUpEdit1.Properties.DisplayMember = "姓名"; searchLookUpEdit1.Properties.ValueMember = "年龄"; search.原创 2022-05-05 22:56:32 · 1881 阅读 · 1 评论 -
Dev的comboBoxEdit
devexpress的comboBoxEdit和winform自带的combox类似,如下:comboBoxEdit1.Properties.Items.Add("1"); comboBoxEdit1.Properties.Items.Add("2"); comboBoxEdit1.SelectedIndex = 1;也是为comboBoxEdit1添加了多个下拉选项。...原创 2022-05-05 21:58:22 · 935 阅读 · 0 评论 -
Dev的splitContainerControl
1、鼠标移动到这里,鼠标变成左右双箭头此时可以选中splitContainerControl控件,也可以按下鼠标左键左右拖动可以设置分割左右panel的比例。2、SplitterPosition(设置分割的位置))如果想让两个panel左右分割,然后各自50%,可以使用如下方法: int width = splitContainerControl2.Width;//获取控件宽度 splitContainerControl2.SplitterPosition = width /原创 2022-04-19 09:59:01 · 1926 阅读 · 0 评论 -
Dev的panelcontrol
1、backcolor直接设置backcolor没有反应,需要把LookAndFeel的style属性改为除了skin以外的其他属性,比如Flat,然后把userdefaultlookandfeel改为false,然后backcolor和backcolor2两个属性就可以控制背景色了。2、...原创 2022-04-19 09:21:55 · 1042 阅读 · 0 评论 -
在正则表达式内设定选项
string pattern = "(?i:[A-Z])\\d";//指定括号中的组不区分大小写 string str = "A1 2b c2 3D"; Regex regex = new Regex(pattern); MatchCollection matchCollection = regex.Matches(str); foreach (var item in matchCollection) { Console.WriteLine(item)原创 2022-04-14 21:03:01 · 265 阅读 · 0 评论 -
c#正则表达式——做决策
// (?(expression)yes|no)string pattern = "(?([A-Z])[A-Z]\\d|\\dD)";//如果匹配了expression,则去匹配yes,否则就去匹配nostring str = "A1 2B C2 3D";Regex regex = new Regex(pattern);MatchCollection matchCollection = regex.Matches(str);foreach (var item in matchCollection)原创 2022-04-13 22:30:38 · 211 阅读 · 0 评论 -
c#正则表达式——高级组
string pattern = "[A-Z](?=\\d)";//正声明指定括号中的模式必须位于括号外声明的右侧,但是括号中的模式不构成匹配部分 string str = "A1 B C2 D"; Regex regex = new Regex(pattern); MatchCollection matchCollection = regex.Matches(str); foreach (var item in原创 2022-04-13 22:11:04 · 382 阅读 · 0 评论 -
c#正则表达式——反向引用
代码: string pattern = "mr ([A-Z])[a-z]*\\1"; string str = "mr JhonsJ?"; Regex regex = new Regex(pattern); MatchCollection matchCollection = regex.Matches(str); foreach (var item in matchCollection)原创 2022-04-13 21:33:03 · 589 阅读 · 0 评论 -
c#正则表达式——替换
string pattern = "(mr|dr) ([A-Z])[a-z]*"; string str = "mr Jhons$,dr Tom$"; Regex regex = new Regex(pattern); var ouputStr = regex.Replace(str, "Mr X"); Console.WriteLine(ouputStr); Console.Wri.原创 2022-04-13 21:11:30 · 5175 阅读 · 0 评论 -
c#正则表达式——组
1、捕获组()代码: string pattern = "mr|ms [A-Z][a-z]*"; string str = "mr Jhons,ms Tom"; Regex regex = new Regex(pattern); var collection = regex.Matches(str); foreach (Match item in collection) { Console.Write原创 2022-04-13 20:33:05 · 657 阅读 · 0 评论 -
c#求int32数据的补码
正数的补码就是源码:负数的补码是符号位不变,符号位不计入计算(1为负数,最高位是符号位),其余位取反,然后加1,然后把除了符号位的数据加个负号即可,因为计算出来的值是正值。 private Int32 GetComplementCode(int value) { byte symbol = (byte)(value >> 15); if (symbol != 0)//负数 {原创 2022-04-12 10:11:16 · 1683 阅读 · 0 评论 -
DataTable用法详解
DataTable dt = ds.Tables [0]; int rows = dt.Rows.Count ; for(int i=0;i<rows;i++) { DataRow currentRow = dt.Rows[i]; string val1 = currentRow["nu.原创 2022-04-07 14:21:39 · 6052 阅读 · 0 评论 -
navicat premium使用注意事项
1、右击所在的数据库,然后打开数据库后才能运行sql文件。原创 2022-04-06 10:15:44 · 1088 阅读 · 0 评论 -
c#反射使用注意事项
1、namespace WebServiceTest.MES{ class Class1 { public string GetString(string jsonStr) { WebServiceTest.ServiceReference1.WebPackServiceActionClient ddd = new ServiceReference1.WebPackServiceActionClient();原创 2022-04-02 12:03:36 · 302 阅读 · 0 评论 -
c#正则表达式——匹配非标准字符(使用转义序列\)
string pattern = "1+"; string input = "1+121"; Regex regex = new Regex(pattern); MatchCollection matchCollection = regex.Matches(input); foreach (Match item in matchCollection) {原创 2022-03-30 22:27:06 · 715 阅读 · 0 评论