自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 WinForm 简单用户登录记录器实现教程

本文介绍了一个基于WinForm的用户登录记录器实现方案。该程序包含用户登录界面、记录显示和管理功能,支持将登录信息(账号+时间)以JSON格式存储到本地文件。核心功能包括:1) 自定义登录控件实现账号密码输入和密码显示切换;2) 主窗体负责记录管理,支持右键删除和自动加载历史记录;3) 使用事件委托实现控件间通信,通过JSON序列化实现数据持久化。程序采用模块化设计,结构清晰,具备良好的可维护性和扩展性,适合作为小型登录系统的开发参考。

2025-08-15 21:52:28 1113

原创 C# 结构体与类的区别是什么?

C#中结构体(Struct)和类(Class)的主要区别体现在内存管理、行为特性和适用场景上。结构体是值类型,存储在栈中,赋值时创建完整副本;类是引用类型,存储在堆中,赋值时复制引用。结构体不支持继承,允许不通过new实例化,但需在构造函数中初始化所有成员;类支持继承,必须通过new实例化,可设置成员默认值。结构体适合小型简单数据,类适合复杂对象和需要继承多态的场合。两者的内存生命周期和比较行为也存在本质差异。

2025-08-14 20:16:18 1380

原创 C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比

C#中ArrayList、List<T>和Dictionary<TKey,TValue>三大集合类型对比:ArrayList是非泛型动态数组,可存任意类型但需强制转换;List<T>是类型安全的泛型列表,指定元素类型无需转换;Dictionary<TKey,TValue>通过键值对存储,支持快速键查找。核心区别体现在类型安全、存储形式、访问方式和查找效率上,List<T>的Find方法和Dictionary的TryGetValue是实用特性。Arr

2025-08-14 18:02:45 1123

原创 C# Json 类数据与文件操作泛型方法(优化版)

本文介绍了一个基于Newtonsoft.Json的泛型JSON工具类,实现了C#对象与JSON文件的双向转换功能。该工具支持单对象和多键值对两种JSON格式,提供序列化写入、反序列化读取等核心方法,并针对文件操作进行了优化处理。工具类采用UTF-8编码避免乱码,使用using确保资源释放,通过完善的异常处理机制提高健壮性。文中还展示了用户信息、学生数据等典型应用案例,以及处理大型JSON文件的流式操作方法。该工具具有代码复用性高、参数校验严格、资源管理规范等特点,能有效提升JSON文件操作的开发效率和可靠性

2025-08-13 22:12:58 357

原创 C# Json 类数据与文件操作的泛型方法

本文介绍了使用Newtonsoft.Json库实现JSON数据的序列化和反序列化操作。主要包括:1)通过SerializeObject和DeserializeObject方法实现泛型对象与JSON文件的相互转换;2)使用JObject处理包含多个JSON数据的文件,支持按键读写;3)对比了StreamReader/Writer与File.Read/WriteAllText的差异,以及JObject.ToObject与JsonConvert.DeserializeObject的区别。文章提供了格式化和非格式化

2025-08-13 21:53:14 858

原创 基于 C# WinForm 字体编辑器开发记录:从基础到进阶

本文介绍了WindowsForms中字体编辑器的开发过程,分为基础版和进阶版两个阶段。基础版通过TextBox和简单窗体实现全局字体设置,进阶版改用RichTextBox并新增了系统字体加载、部分文本编辑、样式设置等功能,通过右键菜单触发操作。文章详细说明了关键代码实现,包括字体列表动态加载、样式组合处理等,展示了从简单到复杂的功能演进过程,体现了WindowsForms控件的灵活应用。

2025-08-13 20:31:45 866

原创 C# 中的后台线程与前台线程

C#多线程编程中,前台线程和后台线程主要区别在于对程序生命周期的影响。前台线程会阻止程序退出直到执行完毕,而后台线程会随主线程结束而终止。通过IsBackground属性设置线程类型,默认是前台线程。关键任务应使用前台线程(如数据保存),辅助性任务适合后台线程(如日志记录)。Task类默认使用后台线程。开发时需根据任务重要性选择线程类型,前台线程确保关键操作完成,后台线程提高资源利用率,但要注意处理资源释放问题。

2025-08-13 18:45:29 378

原创 C# 多线程与单线程

本文通过烹饪场景对比了C#单线程与多线程的实现差异。单线程按顺序执行任务(总耗时8秒),导致界面卡顿;多线程通过Thread类或Task类并行处理(总耗时5秒),提升效率且保持界面响应。文章详细介绍了三种创建线程的方法:定义方法名、使用委托和Lambda表达式,并对比了它们的优缺点。关键提示:多线程需注意线程安全,合理设置后台线程(IsBackground=true),避免程序无法正常退出。虽然多线程能显著提升性能,但需权衡资源消耗与线程同步问题。

2025-08-13 18:14:06 1446

原创 C# 重写(override)与隐藏(new):深度解析与实践指南

本文深入解析 C# 中重写(override)与隐藏(new)的核心区别:重写通过 virtual/override 实现运行时多态,根据对象实际类型调用方法;隐藏则通过 new 关键字实现静态绑定,依赖变量声明类型决定调用逻辑。文章从本质定义、执行机制、场景选择三方面进行对比,并给出常见错误解决方案。重写适用于需要多态扩展的场景,而隐藏更适合静态功能隔离。正确理解二者的差异,能帮助开发者更精准地实现方法复用与扩展。

2025-08-13 15:05:16 1178

原创 WinForm 中 ListView 控件的实战应用与功能拓展

本文介绍了WinForm中ListView控件的常用功能实现,包括:1.初始化与列设置,通过ColumnHeader对象构建表格视图;2.右键菜单实现数据删除功能;3.支持大图标、小图标和详情视图的切换;4.数据查找与高亮显示;5.查找替换功能实现数据修改;6.通过分割字符串实现多列数据添加。文章还提供了ImageList和ContextMenuStrip等扩展资源的使用建议,以及推荐阿里巴巴图标库作为图标资源。这些功能组合使用可以构建出功能完善的列表展示界面,满足文件管理、信息展示等多种业务需求。

2025-08-09 11:36:55 1087

原创 WinForm 系统对话框详解:让文件操作与样式设置更简单

本文介绍了WinForm开发中五种常用系统对话框的使用方法:1. OpenFileDialog用于文件选择,支持多选和文件类型过滤;2. FolderBrowserDialog专门用于选择文件夹;3. SaveFileDialog处理文件保存操作;4. ColorDialog提供可视化颜色选择;5. FontDialog集成字体、字号和颜色设置。这些对话框均通过ShowDialog()方法以模态方式显示,具有标准化界面和一致的操作逻辑,能有效提升应用程序的专业性和用户体验。文章通过具体代码示例展示了各对话框

2025-08-09 10:44:41 1136

原创 WinForm 复合控件(用户控件):创建与使用指南

摘要:复合控件是WinForm中由多个基础控件组合而成的功能单元,可显著提升开发效率。其特点包括:简化界面开发(避免重复搭建)、保证风格统一、封装交互逻辑。创建时需设计布局、封装属性、定义事件,并通过设置Public权限实现外部调用。相比自定义控件,复合控件更易开发,适合构建标准业务模块(如搜索框、数据面板)。使用时需注意接口最小化、响应式布局和一致的用户体验,是WinForms模块化开发的核心技术。

2025-08-09 10:18:23 834

原创 WinForm 对话框的 Show 与 ShowDialog:阻塞与非阻塞的抉择

本文对比了WinForm中Show()和ShowDialog()两种对话框显示方式的区别:Show()以非阻塞方式显示对话框,允许同时操作主窗口,适用于工具窗口等需长期存在的场景;ShowDialog()以阻塞方式显示模态对话框,需完成操作才能继续,适合确认对话框等需立即反馈的场景。文章详细分析了两者的代码实现、适用情况及最佳实践,强调应根据具体交互需求选择合适方式,并提供了内存管理、按钮设置等实用技巧,帮助开发者提升用户体验。

2025-08-08 21:58:17 1046

原创 WinForm 实战 (进度条):用 ProgressBar+Timer 打造动态进度展示功能

本文介绍了WinForm桌面应用中实现进度反馈的有效方法。通过ProgressBar控件与Timer定时器的配合,开发者可以创建动态进度展示功能。文章详细讲解了关键控件的属性设置和事件绑定,并提供了完整的代码实现示例,包括进度更新、暂停/继续等交互逻辑。这种技术方案适用于文件操作、数据处理、软件安装等多种场景,能显著提升用户体验,减少等待焦虑。文章最后强调,合理的进度反馈设计应让用户对任务状态和完成时间有清晰预期。

2025-08-08 21:31:03 840

原创 WinForm 工具箱内容剖析

摘要:WinForm工具箱包含四大类控件:1)公共控件(如Button/TextBox/ComboBox等)实现基础交互;2)容器控件(如Panel/TabControl)用于界面布局;3)菜单工具栏(MenuStrip/StatusStrip)组织功能入口;4)对话框和组件(如Timer/SerialPort)提供扩展功能。每个控件具有特定用途,通过关键属性(如Text/Value)和事件(Click/SelectedIndexChanged)实现功能。开发时需合理组合控件,并利用Anchor/Dock等

2025-08-08 18:47:42 679

原创 WinForm 添加 SunnyUI工具类库

《SunnyUI工具栏安装指南》摘要:本文介绍在Visual Studio 2022中为WinForm项目添加SunnyUI工具栏的步骤。通过NuGet包管理器搜索安装SunnyUI组件,安装完成后工具箱将自动生成SunnyUI专用工具栏,开发者可直接拖拽使用。安装过程包括:在解决方案资源管理器中右键项目→管理NuGet程序包→搜索安装SunnyUI→接受许可→验证安装结果。(98字)

2025-08-08 10:11:16 522

原创 WinForm 用户登录界面设计(附WinForm项目创建流程)

创建新项目步骤界面展示具体思路主要代码重点内容解析总结创建新项目步骤界面展示该项目是一个基于 Windows Forms 的用户登录系统,核心文件生成逻辑围绕展开,主要用于实现用户注册信息的持久化保存,以便后续登录验证。该系统通过将用户注册信息序列化为 JSON 格式并存储到本地文件,实现了简单的用户数据持久化。生成的文件以账号命名,内容为结构化的用户信息,便于后续登录时快速读取和验证,核心逻辑由CreateJson类封装,依赖库实现 JSON 处理。### 生成文件思路分析。

2025-08-05 17:13:36 1731

原创 C# 的委托和事件 总结

而事件是基于委托的特殊机制,主要用于实现松耦合的观察者模式,通过限制外部访问提高了代码的安全性和封装性。是一种引用类型,可看作方法的容器,能封装一个或多个方法(支持多播),允许像传递变量一样传递方法,常用于回调、方法参数传递等场景。外部可直接调用或修改其包含的方法列表。基于委托实现,是特殊的委托成员,主要用于发布 - 订阅模式。取消订阅,不能直接调用或修改,安全性更高,典型用于对象间通信(如按钮点击、状态变更通知)。简单说,事件是受约束的委托,专为消息通知设计,而委托更通用,是方法的 "指针" 容器。

2025-08-02 16:07:22 1278

原创 C# 中抽象类、密封类、静态类和接口的区别

本文对比了C#中四种关键类型结构的特性和使用场景。抽象类(abstract)提供基类实现与强制派生类实现抽象成员;密封类(sealed)禁止继承以保护实现;静态类(static)仅包含静态成员,用于工具方法;接口(interface)定义规范,支持多实现。四者在实例化、继承性、成员类型等方面存在显著差异,选择时需根据共享逻辑、规范要求、扩展限制等功能需求决定,如抽象类适合"是一种"关系,接口适合"具有能力"的规范。

2025-08-02 15:52:25 1064

原创 C# 中生成随机数的常用方法

摘要:C#生成随机数的常用方法包括:1)使用Random类生成各类随机数(整数、浮点数、指定范围值),适用于普通场景;2)使用安全加密的RandomNumberGenerator类生成随机整数和字节数组,适合安全敏感场景;3)通过计算和四舍五入生成指定精度的小数。关键区别在于Random类性能好但不适合安全场景,而RandomNumberGenerator提供加密级随机性但开销较大。多线程环境中Random需同步处理,RandomNumberGenerator则线程安全。开发时应根据安全性要求、性能需求和随

2025-08-01 15:58:58 1028

原创 c#保留小数点后几位 和 保留有效数字

C#中处理数字精度主要有两种方式:保留小数点后几位和保留有效数字。保留小数点后几位可通过ToString("F2")或Math.Round(num,2)实现,适合固定精度场景。保留有效数字需自定义方法,考虑数字数量级,适合科学计算等场景。ToString()适合结果展示,Math.Round()适合数值计算。注意格式字符串会四舍五入并补零,而自定义有效数字方法需处理不同数量级的情况。根据需求选择合适方法:显示用ToString(),计算用数值方法。

2025-08-01 15:53:59 943

原创 C# 引用外部项目

C#引用外部项目的三种常用方法:1)同一解决方案内通过"添加项目引用"实现自动同步;2)通过DLL文件引用,适用于独立编译项目;3)使用NuGet包管理第三方库。重点注意事项:被引用类需设为public,使用时要引入对应命名空间。以MyList列表为例,演示了添加DLL引用的具体步骤:找到bin/Debug下的DLL文件,添加后系统会自动处理命名空间引用。项目文件也可直接复制使用,但需注意权限设置和版本兼容性。

2025-08-01 15:16:37 905

原创 C# _Json数据

本文介绍了在C#中使用Newtonsoft.Json库处理JSON数据的方法。主要内容包括:1)添加Json库的步骤;2)数据序列化(对象转JSON)和反序列化(JSON转对象)操作,通过Student类示例演示了JsonConvert.SerializeObject和JsonConvert.DeserializeObject方法的使用;3)创建和读取JSON数据的具体实现,包括创建JObject对象、添加数据、写入文件,以及读取解析JSON文件内容。文中还对比了System.Text.Json和Newto

2025-08-01 11:36:54 2337

原创 C# 事件Event

C#中的事件是基于委托的发布/订阅机制,具有封装性和安全性。事件只能在声明类内部触发,外部只能通过+=/-=订阅或取消订阅。通过示例展示了ToolMan类定义事件,LazyMan类订阅事件实现"带饭"功能,并指出直接调用事件会报错,需通过类方法触发。同时演示了水温报警和家庭开饭两个事件应用场景,说明Action委托的使用方式。事件机制有效实现了对象间的松耦合通信。

2025-07-31 22:21:21 1053

原创 C# XML 文件

本文介绍了C#中使用System.Xml命名空间处理XML文件的基本操作。主要内容包括:创建XmlDocument对象、添加XML声明(XmlDeclaration)、创建元素节点(CreateElement)、设置节点属性和文本内容(SetAttribute、InnerText)、保存XML文件(Save)以及读取XML文件(Load)的方法。示例展示了如何构建一个包含姓名和年龄信息的XML文档,并演示了如何遍历XML节点数据。这些操作涵盖了XML文档创建、修改和读取的基本功能,是C#中处理XML文件的常

2025-07-31 20:30:08 675

原创 C#_创建自己的MyList列表

本文介绍了如何实现一个自定义的泛型列表类MyList<T>。该列表使用数组作为内部存储结构,包含核心功能: 基础属性:Capacity获取容量,Count获取元素数量 核心方法:Add添加元素、Insert插入元素、RemoveAt删除元素、IndexOf查找索引 排序功能:实现冒泡排序算法 扩容机制:当容量不足时自动扩容为原容量的2倍 接口实现:支持IEnumerable<T>接口,可使用foreach遍历 索引器:通过索引访问元素 测试代码演示了列表的初始化、增删改查、排序和遍历

2025-07-30 21:23:45 653

原创 c#_文件的读写 IO

摘要:本文总结了C#中常用的文件IO操作方法,包括文本/二进制文件的读写、追加内容等场景。对小型文本文件推荐使用File类的静态方法(WriteAllText/ReadAllText),大文件处理建议采用StreamReader/StreamWriter流式操作,二进制文件则需使用FileStream。文中提供了8个典型代码示例,涵盖文件创建、读写、追加等常见操作,并强调使用using语句确保资源释放。同时比较了不同方法的优缺点,如静态方法简洁但内存占用高,流式操作复杂但更高效。最后介绍了目录操作和Stre

2025-07-30 18:37:17 750

原创 C# Equals 与 ==

摘要:C#中Equals与==的区别主要体现在比较机制和适用场景。Equals是虚方法,默认比较引用(可重写为值比较);==是运算符,值类型比较值,引用类型比较引用(可重载)。string类特殊处理,两者均比较内容。自定义类需重写Equals并重载==以实现值比较,同时需配套实现GetHashCode。注意null安全性(Equals需非空调用)和结构体的==需显式重载。建议保持两者行为一致以避免混淆。

2025-07-30 14:12:27 1082

原创 C# 拆箱装箱

在 C# 中,装箱(Boxing)和拆箱(Unboxing)是值类型与引用类型之间相互转换的机制,涉及到内存分配和性能开销,是理解 C# 类型系统的重要概念。或接口类型)的过程。

2025-07-30 11:51:04 701

原创 C# _列表(List<T>)_ 字典(Dictionary<TKey, TValue>)

Dictionary<键的数据类型,值的数据类型> 变量 = new Dictionary <键的数据类型,值的数据类型>();//在创建字典是 可以给一些初始数据{"年龄",18 }

2025-07-29 20:55:18 1474

原创 C#_ArrayList动态数组

摘要:C#中的ArrayList是动态数组集合类,可存储不同类型元素并自动调整大小。它提供Add、Remove等丰富操作方法,但存在装箱拆箱性能问题。与普通数组不同,ArrayList长度可变,存储的是object类型。.NET 2.0后推荐使用泛型List<T>,因其具有类型安全和更好的性能。ArrayList适用于需要存储混合类型数据的场景,但要注意其容量自动扩展时的性能开销。

2025-07-29 19:41:24 920

原创 C# _泛型

摘要 泛型是一种通过参数化类型实现代码重用的技术,允许同一份代码操作多种数据类型。在C#中,泛型提供了类型安全、性能优化和代码复用等优势。泛型类通过<T>语法定义,使用时指定具体类型。泛型方法则在方法名后添加类型参数,使用动态类型(dynamic)解决编译时类型不确定的问题。泛型技术显著提高了代码的灵活性和可维护性,是.NET框架中重要的编程特性。

2025-07-29 17:47:52 393

原创 C#_索引器

本文介绍了C#中索引器的使用方法。通过数组索引访问元素是最基础的形式,如arr[5]。在类中,可以通过定义索引器属性this[int index]来封装数组访问,实现get/set操作。此外,索引器还可用于字段访问,如this[string a]可以按字段名(name/age)获取或设置值。索引器使对象能像数组一样通过索引访问数据,提供了更灵活的访问方式,既能操作数组元素,也能管理类中的字段值。

2025-07-28 20:09:34 341

原创 C#_运算符重载 operator

本文介绍了C#中运算符重载的概念和实现方法。通过Class1类的示例,展示了如何重载"=="和"!="运算符来比较对象的属性值而非内存地址。代码演示了重载"+"运算符为减法运算的特殊用法,以及如何在Main方法中调用重载后的运算符。文章强调运算符重载是通过自定义方法逻辑来改变原有运算符的行为,为对象比较和运算提供了灵活性。通过c1和c2实例的比较,说明了运算符重载前后的不同效果。

2025-07-28 19:48:22 368

原创 C# 接口(interface 定义接口的关键字)

本文介绍了C#中接口的定义与使用。接口只能包含方法、索引器和事件的声明,不能包含实现或修饰符。通过Plane和Brid类实现了IFly接口,演示了接口的多态特性。还展示了接口间的继承关系,以及接口与抽象类的组合使用。最后通过数学运算接口Math的示例,展示了如何用加法类和减法类实现同一接口的不同运算逻辑,体现了接口的多态性优势。

2025-07-28 19:34:08 572

原创 C# 静态类_静态方法_静态字段(static 声明静态的关键字 )

摘要:静态类中的所有成员都必须是静态的,不能被实例化或继承。静态类中不能声明非静态字段、属性和方法,静态方法也只能访问静态字段。示例展示了静态类的定义与使用方式:通过类名访问静态字段和属性,调用静态方法。同时演示了普通类中调用静态类成员的方法,以及静态类不能被实例化或继承的特性。

2025-07-28 17:49:14 417

原创 C# 密封类_密封方法 (seadled 关键字)

摘要: C#中的密封类(sealed关键字修饰)和密封方法用于限制继承与重写。密封类(如sealed class Class1)不可被继承,适用于防止因派生类修改核心逻辑导致的代码混乱。密封方法需在子类中通过sealed override声明(如Class2对Base.Move()的密封),使该方法在继承链中不可再被重写(如Class3无法重写Move())。密封机制增强了代码安全性和稳定性,适用于需固定行为或保护关键实现的场景。

2025-07-24 17:57:45 406

原创 C# 抽象类_抽象方法 (abstract关键字)

C#抽象类是一种不能实例化的模板类,可包含普通成员和抽象方法。抽象方法只有声明没有实现,必须由继承的子类通过override重写实现。示例中,Class1抽象类定义了抽象方法Ai(),子类Class2和Boss分别实现不同的攻击逻辑。抽象类主要用于定义基类模板,防止直接实例化,强制子类实现特定功能。通过父类引用指向子类对象(Class1 c1 = new Boss())可实现多态性。

2025-07-24 17:00:48 443

原创 C# 日期与时间 DateTime 结构和TimeSpan 结构

本文介绍了.NET中的DateTime和TimeSpan结构体。DateTime用于表示时间点,演示了获取当前时间(DateTime.Now)、创建特定时间(new DateTime)以及访问年、月、日等时间元素的方法。TimeSpan用于表示时间间隔,示例展示了计算两个DateTime之间的差值(Subtract方法)以及获取间隔中的天数、小时数等属性。文章还包含了时间加减操作(AddDays/AddMinutes)和格式化输出(ToString)等实用功能。这些结构体为C#中的时间处理提供了基础支持。

2025-07-23 21:01:27 414

原创 C# 只读字段 readonly关键字

本文介绍了C#中只读字段的两种赋值方法:1.在声明时直接初始化(如public readonly string name="张三");2.通过带参构造函数在实例化时赋值(如new Class1(20,"王五"))。只读字段一旦赋值后就不能修改,但可以通过这两种方式设置初始值。文章还强调,普通字段可读写,而只读字段只能读取不能通过属性或直接赋值修改,并通过代码示例展示了这些特性。

2025-07-23 20:53:55 234

WinForm 简单用户登录记录器实现教程

点击exe应用程序查看效果,项目也在文件夹中

2025-08-15

基于 C# WinForm 技术的字体编辑器

在 Windows 桌面应用开发中,文本编辑工具是非常常见的需求,而字体样式的自定义更是提升用户体验的重要功能。本文将基于 C# WinForm 技术,解析两个字体编辑器版本(基础版与进阶版)的实现思路,带你了解如何从零开始构建一个支持字体自定义的文本编辑工具。 项目结构概览 整个项目包含两个主要版本: 字体编辑器(基础):实现基本的字体样式设置功能 字体编辑器(进阶):在基础版之上增加了右键菜单、更丰富的字体设置选项 两个版本均基于.NET Framework 4.7.2 开发,采用 WinForm 传统桌面应用架构,主要包含主窗体(Form1)和字体设置窗体(Form2)两个核心界面。

2025-08-13

WinForm 实战 (进度条):用 ProgressBar+Timer 打造动态进度展示功能

免费资源0积分 简单的进度条使用,通过ProgressBar和Timer的结合,我们可以轻松实现专业的进度展示功能,显著提升用户体验。在实际开发中,需要根据具体场景选择合适的更新频率、进度计算方式和 UI 展示样式。​

2025-08-08

基于WinForm的信息写入查询系统(Information Management System)

主要工具有Label、TextBox、ComboBox、Button、ProgressBar和Timer 该代码库是一个基于.NET Framework 4.7.2 的 Windows Forms 信息管理系统,主要功能包括: 核心功能:通过 WinForm 界面实现用户信息的录入、查询与 JSON 格式文件存储 主要组件: 表单界面(Form1):包含姓名、身份证号、电话、地址、性别等信息录入项,以及查询和写入按钮 数据处理:使用 Newtonsoft.Json 进行 JSON 序列化 / 反序列化 进度展示:通过计时器和进度条显示操作进度 文件结构: 配置文件:App.config 定义运行时版本 代码文件:Form1.cs(界面逻辑)、CreateJson.cs(JSON 处理)、User.cs(数据模型) 设计文件:Form1.Designer.cs(界面布局) 依赖:引用 Newtonsoft.Json 13.0.3 处理 JSON 数据 数据流程: 写入:将表单数据封装为 User 对象,序列化为 JSON 并保存为 txt 文件 查询:根据姓名读取对应 JSON 文件,反序列化为 User 对象并回显到表单

2025-08-07

基于 Windows Forms 的用户登录系统

该项目是一个基于 Windows Forms 的用户登录系统,核心文件生成逻辑围绕用户信息的 JSON 序列化存储展开,主要用于实现用户注册信息的持久化保存,以便后续登录验证。

2025-08-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除