当前位置: 首页 > news >正文

winform4

jsonusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;//导入json第三方库 使用nuget搜索 LitJsonusing LitJson;using System.IO;namespace ZhiYou_winform_json解析14{json概念是一种轻量级数据交互格式。轻量级说明此种数据格式在网络传输的时候所占的带宽少传输效率高json是目前市场最流行的一种数据交换格式。很多语言都支持它如js,java,c#等。json格式文件特点1.以键值对的形式存储数据。如name:value。称name为键value为值也可称name为属性名称value为属性值。2.每一个键值对必须以英文逗号分割但最后一个键值对除外。3.属性值value键值如果是字符串类型必须是双引号包裹不能使用单引号。属性值vlaue键值如果是数字、布尔也需要使用双引号包裹。4.属性名称是区分大小写。5. [] 代表数组 {}代表字典//json格式//6. JSON在线解析格式化 - JSON.fans7.序列化把一个对象转换成json字符串。 存数据反序列化把一个json字符串转换成对象。 取数据反序列化要想成功有一个关键点对象的属性列表必须和json格式的字符串中的属性名称一一对应。8.为什么要序列和反序列化直接操作字符串需要借助字符串截取等相应的方法。编写代码麻烦所以我们需要把json格式的字符串反序列化成对象。反序列化后操作对象方便访问对象的属性直接打点调用。9. 如何序列化和反序列化使用nuget搜索 LitJson 完成json数据解析*///不使用数据模型序列化和反序列化private void button1_Click(object sender, EventArgs e){//json字符串// 将json字符串转换成对象 反序列ToObjectJsonData jsonData JsonMapper.ToObject(File.ReadAllText(1.txt));// [{name:张三,age:18},{name:李四,age:20}]foreach (JsonData item in jsonData){Console.WriteLine(item[name]);Console.WriteLine(item[age]);}//修改数据jsonData[0][name] 王五;//序列化成json字符串// 序列化ToJsonstring json JsonMapper.ToJson(jsonData);Console.WriteLine(json);//IO 操作 存入字符串File.WriteAllText(1.txt, json);}//使用数据模型序列化private void button2_Click(object sender, EventArgs e){Person person new Person() { Name 张三, Age 18, Height 180f };Person person1 new Person() { Name 张三1, Age 19, Height 181f };Person person2 new Person() { Name 张三2, Age 29, Height 191f };//序列化json数据string personJsonStr JsonMapper.ToJson(person);Console.WriteLine(personJsonStr); //{Name:\u5F20\u4E09,Age:18,Height:180}//三个对象转jsonListPerson list new ListPerson();list.Add(person);list.Add(person1);list.Add(person2);string listJsonStr JsonMapper.ToJson(list);Console.WriteLine(listJsonStr);try{//IO 操作 存入字符串File.WriteAllText(2.txt, listJsonStr);}catch (Exception ex){Console.WriteLine(ex.Message);}//存入本地File.WriteAllText(2.txt, listJsonStr);}//使用数据模型反序列化private void button3_Click(object sender, EventArgs e){//方式1//JsonData jsonData JsonMapper.ToObject(File.ReadAllText(2.txt));//ListPerson list new ListPerson();//foreach (JsonData item in jsonData)//{// Person person new Person();// person.Name item[Name].ToString();// person.Age int.Parse(item[Age].ToString());// person.Height float.Parse(item[Height].ToString());// list.Add(person);//}//方式2ListPerson list JsonMapper.ToObjectListPerson(File.ReadAllText(2.txt));foreach (Person p in list){Console.WriteLine(p.Name);Console.WriteLine(p.Age);Console.WriteLine(p.Height);}}//使用数据模型嵌套序列化private void button4_Click(object sender, EventArgs e){People people new People() { Name 张三, Age 18};people.EmployeesList.Add(new Employee() { Position 视觉工程师, EmployeeId 1, CompanyName 微软 });People people1 new People() { Name 张三1, Age 19 };people1.EmployeesList.Add(new Employee() { Position 视觉工程师1, EmployeeId 11, CompanyName 微软1 });ListPeople list new ListPeople();list.Add(people);list.Add(people1);string listJsonStr JsonMapper.ToJson(list);Console.WriteLine(listJsonStr);//IO 操作 存入字符串File.WriteAllText(3.txt, listJsonStr);}//使用数据模型嵌套反序列化private void button5_Click(object sender, EventArgs e){ListPeople list JsonMapper.ToObjectListPeople(File.ReadAllText(3.txt));foreach (People p in list){Console.WriteLine(p.Name);Console.WriteLine(p.Age);foreach (Employee item in p.EmployeesList){Console.WriteLine(item.Position);Console.WriteLine(item.CompanyName);Console.WriteLine(item.EmployeeId);}}}/数据模型类 model 类public class Person{public string Name { get; set; }public int Age { get; set; }public float Height { get; set; }}public class People{public string Name { get; set; }public int Age { get; set; }//员工类集合 用于后续json数据嵌套public ListEmployee EmployeesList { get; set; } new ListEmployee();}//数据模型3 用于嵌套People类public class Employee{//职位public string Position { get; set; }//员工编号public int EmployeeId { get; set; }//公司名称public string CompanyName { get; set; }}MDIusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;/*MDI作用可以使 窗体包含窗体 并且对窗体进行排列等操作* 在项目中使用MDI窗体时通常将一个MDI窗口窗体作为父窗体*父窗体可以将多个子窗体在容器中使用设置属性中父窗体IsMDIContainer:true;*/namespace zhiyou_winform_MDI{public partial class Form1 : Form{public Form1(){InitializeComponent();//获取menuStrip中 选项Console.WriteLine(menuStrip1.Items[0]);}private void Form1_Load(object sender, EventArgs e){}private void 新建窗体ToolStripMenuItem_Click(object sender, EventArgs e){ChildForm1 childForm1 new ChildForm1();//指定MDI子窗体的父窗体childForm1.MdiParent this;childForm1.Show();//子窗体显示在0,0点childForm1.Location new Point(0, 0);}/*排列MDI窗体public void LayoutMdi(MdiLayout value)value是MdiLayout的枚举值之一用来定义MDI子窗体的布局。Cascade 层叠排列MDI子窗体TileHorizontal 水平平铺MDI子窗体TileVertical 垂直平铺MDI子窗体*/private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e){LayoutMdi(MdiLayout.Cascade);}private void 水平平铺ToolStripMenuItem_Click(object sender, EventArgs e){LayoutMdi(MdiLayout.TileHorizontal);}private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e){LayoutMdi(MdiLayout.TileVertical);}//关闭父窗体private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}private void 查询MDI子窗体个数ToolStripMenuItem_Click(object sender, EventArgs e){MessageBox.Show(this.MdiChildren.Length.ToString());foreach (var item in MdiChildren){Console.WriteLine(item);}}private void 关闭MDI子窗体ToolStripMenuItem_Click(object sender, EventArgs e){foreach (Form item in this.MdiChildren){item.Close();}}private void button1_Click(object sender, EventArgs e){foreach (Control item in this.Controls){Console.WriteLine(item.Text);}}private void button2_Click(object sender, EventArgs e){//通过父窗体 找子窗体 的子控件foreach (Form item in this.MdiChildren){foreach (Control item1 in item.Controls){if (item1 is Button){item1.BackColor Color.Red;}}}}private void button3_Click(object sender, EventArgs e){this.MdiChildren[0].Location new Point(100, 100);}}}管理MDI子窗体foreach (Control item in MdiChildren){if (item is Form7){item.BackColor Color.Red;}}
http://www.gsyq.cn/news/1410354.html

相关文章:

  • PingFangSC字体资源:现代化Web字体加载架构设计与性能优化实践
  • 2026年比较好的cnc永磁吸盘/电控永磁吸盘/电永磁吸盘推荐厂家精选 - 行业平台推荐
  • 2026年 宝钢HC340/590DPD+Z镀锌双相钢厂家推荐:高强度与深冲性能融合的汽车用钢首选 - 品牌企业推荐师(官方)
  • 如何永久保存微信聊天记录?免费本地备份工具完整指南
  • AI构建器从原型到生产:跨越鸿沟的实战指南
  • 警惕!ChatGPT概念炒作进入“死亡交叉”阶段:技术面+资金流+政策窗口三重倒计时,现在调仓还来得及吗?
  • AI应用前端设计实战:应对大模型输出不确定性的布局与状态管理策略
  • RAG源码阅读指南:别按模块读,按数据流走,两链路打通源码任你行!
  • UE4 UMG动效进阶:手把手教你打造带缩放和点击反馈的“CSS风”交互按钮
  • 中国知名半导体展会盘点,国产芯片热门展览精选 - 品牌2025
  • 基于Serverless架构的订阅制电商系统设计与实战
  • FPGA设计实战:手把手教你实现一个零延迟的预读FIFO(附Verilog代码与仿真)
  • AI生成代码的CORS安全漏洞:从通配符到反射攻击的防护指南
  • Unity3D超高清照片墙实战:如何突破官方分辨率限制,搞定9600x4320大屏互动
  • 如何高效管理多任务窗口:专业隐私保护解决方案
  • Unity运行时也能导出模型?手把手教你用C#脚本实现游戏内OBJ导出功能
  • 国产化替代实战:手把手教你为RuoYi框架配置达梦数据库驱动与分页插件
  • ChatGPT实战能力进阶路线(2024认证版):初级→中级→高级→专家级的4级能力认证标准+87项细分技能图谱
  • FANUC机器人电弧跟踪功能深度解析:从电流采样原理到ROBOGUIDE仿真避坑指南
  • 手把手教你阿里云服务器的购买及环境搭建
  • AI神话祛魅:从技术原理到数据策略,理性评估与安全使用指南
  • 基于LangGraph构建Android项目智能审计代理:架构设计与工程实践
  • MATLAB玩转RTL-SDR:从驱动安装到硬件支持包配置的保姆级避坑指南
  • Zotero Style终极指南:5分钟打造高效文献管理系统
  • 2026年知名的大功率高压清洗机/高压清洗机厂家推荐与选型指南 - 行业平台推荐
  • Gemma-ko-v01未来路线图:即将推出的5大功能,提前了解新特性
  • 从ReactNativeOne学习:如何构建一个完整的React-Native应用架构 - 终极指南
  • ppf-contact-solver在vast.ai上的部署:低成本GPU租赁方案终极指南
  • 别再复制官网代码了!Vue + Ant Design 图标与分隔符的本地化实战(附完整资源包)
  • FFmpeg Micro与MCP协议:Claude桌面端视频转码的AI驱动实践