- 博客(71)
- 收藏
- 关注
原创 C#获取当前方法的命名空间、类名称、方法名称以及方法的参数信息
异常信息: 在 WindowsFormsApp1.Form1.button1_Click(Object sender, EventArgs e) 位置 D:\Demo\WindowsFormsApp1\WindowsFormsApp1\Form1.cs:行号 32。获取信息:WindowsFormsApp1.Form1.button1_Click(System.Object sender,System.EventArgs e)
2025-04-18 15:26:32
345
原创 C#winform主线程刷新UI时竟抛异常“从不是创建控件的线程访问它“
无论是处理方式1还是处理方式2,仅解决了抛出异常的问题,但是并未搞清楚第一次界面使用的是子线程,为何软件竟然能够通过,并且主线程刷新UI竟然会异常。> 希望有懂的大神,可以帮忙解惑下。
2025-04-17 14:12:06
1029
原创 C#MQTT协议服务器与客户端通讯实现(客户端包含断开重连模块)
基于比较老的项目中应用的DLL,其他更高版本变化可能较大,谨慎参考。绑定事件【客户端断开(服务器)连接事件】绑定事件【客户端断开(服务器)连接事件】绑定事件【接收客户端(发送)消息事件】绑定事件【客户端连接服务器事件】绑定事件【客户端连接服务器事件】绑定事件【客户端订阅主题事件】绑定事件【客户端退订主题事件】绑定事件【客户端接收消息事件】属性:客户端连接状态。
2025-04-12 16:15:34
627
原创 服务器与客户端通讯测试
通过上面4种测试方式,我们发现在TCP通讯中无论客户端如何发送数据,服务器都是能够接受到数据的,那么我们就可以理解这句话:TCP协议(Transimission Control Protocol)是以一种面向连接的、可靠的、基于字节流的传输层通信协议。
2025-03-28 16:12:09
840
原创 C#TCP通讯封装服务器工具类
方式2:调用:public Action<EMessage, IPEndPoint, int, string> AddEventToOutLog。方式2:调用:public EventHandler<byte[]> AddEventToDataReceived。方式:设置属性【OutputReceivedLog 】、设置属性【OutputReplyLog】ASCII:ASCII-解析输出。方式1:通过有参构造函数添加。方式1:通过有参构造函数添加。UTF8:UTF8-解析输出。
2025-03-28 14:53:49
552
原创 C#TCP通讯封装客户端工具类
方式2:调用:public Action<EMessage, IPEndPoint, int, string> AddEventToOutLog。方式2:调用:public EventHandler<byte[]> AddEventToDataReceived。连接服务器:bool ConnectServer(string ip, int port)private set;ASCII:ASCII-解析输出。方式1:通过有参构造函数添加。方式1:通过有参构造函数添加。UTF8:UTF8-解析输出。
2025-03-26 18:01:29
470
原创 C#winform实现气泡碰撞电脑桌面边缘(碰撞后改变气泡颜色,支持添加气泡)
【代码】C#winform实现气泡碰撞电脑桌面边缘(碰撞后改变气泡颜色)
2025-03-20 18:32:15
281
原创 TCP三次握手
SYN是 TCP 协议中用于发起连接请求的控制位。当客户端想要与服务器建立 TCP 连接时,会发送一个带有SYN标志位设置为 1 的数据包给服务器,这个数据包就被称为SYN包。该包的主要目的是同步客户端和服务器之间的初始序列号(Initial Sequence Number,ISN),以便后续的数据传输能够有序进行。数据包内容源端口和目的端口:客户端随机选择一个源端口,而目的端口是服务器正在监听的端口.初始序列号(ISN):客户端会随机生成一个初始序列号,这个序列号用于标识该连接中第一个字节的序号。
2025-03-20 15:15:04
956
原创 C#winform将引用的DLL嵌入exe
在软件开发的过程中不可避免需要引用第三方类库或自定义类库(DLL), 引用的DLL一般在生成项目时会拷贝至Debug或Release目录中, 造成生成目录中文件繁多的问题,鉴于此现象希望将DLL封装在项目的exe文件中。
2024-12-20 15:43:05
1044
原创 C#通过NPOI 读、写Excel数据;合并单元格、简单样式修改;通过读取已有的Excel模板另存为文件
【代码】C#通过NPOI 读、写Excel数据;合并单元格、简单样式修改;通过读取已有的Excel模板另存为文件。
2023-11-28 16:38:12
1849
原创 C#多线程的操作
在软件开发的过程中会很频繁的用到线程(Thread),在线程使用的过程中总是能出现“这样”或者“那样”的问题。线程被定义为程序的执行路径。如果应用程序涉及到复杂的和耗时的操作,设置不同的线程执行路径往往是有益的,让每个线程执行特定的工作。其实Task 是基于 Thread 的,是比较高层级的封装,Task 最终还是需要 Thread 来执行,使用Thread 开启的线程默认使用前台线程,而Task 默认使用后台线程。不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。
2023-11-15 17:07:42
885
原创 C#线程使用
1.异步委托开启线程注意:1.若使用异步委托开启线程,则委托仅允许添加一个方法;2.启用委托开启线程,可以多次启用线程,相当于再次启用另一条线程;/// <summary>/// 定义委托类型/// </summary>public static Action<string, int> Test;/// <summary>/// 启动异步委托线程/// </summary>/// <param name="name"&
2022-02-25 16:16:25
902
原创 C#文本框验证当前按键或验证输入内容
1 核心代码(校验当前字符是否为数字或退格键)public class Utility{ /// <summary> /// 判断按键是否为数字或退格键 /// </summary> /// <param name="ch">按键字符</param> /// <returns>是:true</returns> public static bool IsInputNumber(char ch) { return
2022-02-21 15:26:50
2070
原创 C#关于Func和Action委托的介绍
委托:委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。1.Action委托没有返回值,可以不包含参数(1)声明委托、定位委托事件、向委托添加事件、执行委托/// <summary>/// 不包含参数/// </summary>private event Action Action_0;/// <
2022-02-16 11:59:06
5127
原创 C#关于JSON的使用
(2)大量数据时尽量少用Json存储数据,Json适用于轻量级数据;(1)一般情况不使用加密,若要使用加密请进行验证以免出现错误;(3)使用Json时需要添加依赖包,并引进命名空间;从包管理器添加Json依赖包,
2022-02-16 10:45:51
4325
1
原创 关于C#winform端Settings.settings的见解
1.说明由于最近工作比较忙很长时间没有写文章了,最近在项目中使用Settings.settings时遇见了一些问题,故作记录,要是有不对的希望各位大神指点。2.Settings.settings说明Settings.settings结构如上图,在Settings.settings中添加节点时Settings.Designer.cs自动生成该节点的属性,App.config自动生成节点信息。3.使用方式介绍private void button1_Click(object sender, E
2021-12-09 12:06:56
4239
原创 C#TextBox设置提示文本(SetHintText)
效果展示核心代码[DllImport("user32.dll", CharSet = CharSet.Auto)]private static extern Int32 SendMessage(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);public static void SetHintText(Control control, string text){ Sen
2021-10-20 10:38:54
4895
原创 C#已知两点(线段),求互相垂直平分两点(线段)。
/// <summary> /// 根据两点求直线以及直线垂直平分线的k,b值, /// </summary> /// <param name="x1">传递值为已知坐标点x1,返回值为垂直平分线的x1</param> /// <param name="x2">传递值为已知坐标点x2,返回值为垂直平分线的x2</param> /// <param na
2021-09-11 11:39:51
1257
原创 C#在控件中绘制矩形、圆、线段等(切换不同的图片,自定义翻页控件,通过委托监控某个字段)
1.效果展示代码 /// <summary> /// 记录鼠标移动时的位置 /// </summary> private Point _mouseLocation; //鼠标移动事件 private void pic_1_MouseMove(object sender, MouseEventArgs e) { _mouseLocation =
2021-09-09 18:23:35
2315
1
原创 C#winform设置组合快捷键
1.设置窗体属性:keyPreview = true;2注册事件3.在事件中添加代码 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.Alt && e.KeyCode == Keys.S) //Ctrl + Alt + S { MessageBox.Show("按下了Control + Alt + S");
2021-08-13 11:32:15
1053
原创 C#winform程序防多开,以及限定指定PC打开程序
1.限制只能打开一个程序var processes = Process.GetProcesses();var currentProcess = Process.GetCurrentProcess();var isRun = false;foreach (var p in processes){ if (p.ProcessName == currentProcess.ProcessName && p.Id != currentProcess.Id) {
2021-06-10 11:21:42
493
原创 C#重绘GroupBox,使文本居中显示
using System.ComponentModel;using System.Drawing;using System.Windows.Forms;namespace MyNameSpace{ public class M_GroupBox : GroupBox { private string _text = ""; /// <summary> /// 构造函数 /// </summary&
2021-05-08 16:31:26
1483
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人