winform4

json

using 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搜索   LitJson
using LitJson;
using System.IO;
namespace ZhiYou_winform_json解析14
{
     //json格式
    //[{"name":"zhangsan","age":18,"Name":"aaaa"},
    //{"name":"lisi","age":20,"Name":"aaaabb"}]
    /*
 json概念:是一种轻量级数据交互格式。
轻量级说明此种数据格式在网络传输的时候所占的带宽少,传输效率高。和xml相比较是比较轻量的。xml是一种老旧的数据交换格式。
json是目前市场最流行的一种数据交换格式。很多语言都支持它,如:js,java,c#等。
json格式文件特点:
1.以键值对(名值对)的形式存储数据。
如:"name":"value"。称name为键,value为值,也可称name为属性名称,value为属性值。
2.每一个键值对必须以英文逗号分割,但最后一个键值对除外。
3.属性值(value键值)如果是字符串类型必须是双引号包裹,不能使用单引号。属性值(vlaue键值)如果是数字、布尔不需要使用双引号包裹。
4.属性名称(key键)必须使用双引号包裹。
5.属性名称是区分大小写。
6. [] 代表数组  {}代表字典
              
              
    
    
                // 序列化:把一个对象转换成json字符串。
                // 反序列化:把一个json字符串转换成对象。
                // 反序列化要想成功,有一个关键点:对象的属性列表必须和json
                // 格式的字符串中的属性名称一一对应。
     
                 //为什么要序列和反序列化
                // 直接操作字符串需要借助字符串截取等相应的方法。
                // 编写代码麻烦,所以我们需要把json格式的字符串反序列化成对象。
                // 反序列化后,操作对象方便,访问对象的属性直接打点调用。

               
              
 */
    public partial class Form1 : Form
    {

        //反序列化2和序列化2 - 因为json文件为集合,所以新建一个集合
        List<Magic> magicList = new List<Magic>();
        public Form1()
        {
            InitializeComponent();
        }


        //反序列化1
        private void button1_Click(object sender, EventArgs e)
        {

            //反序列化json字符串
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson.txt"));
            Console.WriteLine(jsonData);
            //使用foreach去遍历数组信息
            //temp也是jsondata类型的,但是temp是一个对象
            foreach (JsonData temp in jsonData)
            {
                //通过索引其去取得temp中的value
                //返回值还是jsondata类型
                JsonData idvalue = temp["id"];
                JsonData namevalue = temp["name"];
                JsonData numbervalue = temp["number"];

                //将jsondata转化为字符串进行输出
                //name本身就为str,所以不用转换
                int id = int.Parse(idvalue.ToString());
                int number = int.Parse(numbervalue.ToString());
                string nameStr = namevalue.ToString();
                //输出
                Console.WriteLine(id + ":" + nameStr + ":" + number);
            }

        }


        //序列化1
        private void button7_Click(object sender, EventArgs e)
        {

            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson.txt"));

            //序列化json内容
            string ss = JsonMapper.ToJson(jsonData);
            Console.WriteLine(ss);
        }

        //反序列化2
        private void button2_Click(object sender, EventArgs e)
        {
            //依旧使用JsonMapper去进行解析
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson.txt"));
            foreach (JsonData temp in jsonData)
            {


                //通过索引其去取得temp中的value
                //返回值还是jsondata类型
                JsonData idvalue = temp["id"];
                JsonData namevalue = temp["name"];
                JsonData numbervalue = temp["number"];

                //将jsondata转化为字符串进行输出
                //name本身就为str,所以不用转换
                int id = Int32.Parse(idvalue.ToString());
                int number = Int32.Parse(numbervalue.ToString());
                string stringStr = namevalue.ToString();


                // 创建一个新对象
                Magic magic = new Magic();

                magic.id = id;
                magic.number = number;
                magic.name = stringStr;

                //保存3个对象
                magicList.Add(magic);

            }


        }

        //序列化2
        private void button3_Click(object sender, EventArgs e)
        {
            //序列化json内容
            string ss = JsonMapper.ToJson(magicList);
            Console.WriteLine(ss);
        }


        //序列化3
        private void button5_Click(object sender, EventArgs e)
        {
            List<Student> listArray = new List<Student>();

            for (int i = 0; i < 5; i++)
            {
                Student student = new Student() { Name = "zhangsan" + i, Age = i + 10 };
               
                
                
                listArray.Add(student);
            }

            //序列化json
            string ss = JsonMapper.ToJson(listArray);
            Console.WriteLine(ss);
            //存入本地
            File.WriteAllText("tempJson.txt", ss);

        }

        //嵌套json解析
        private void button6_Click(object sender, EventArgs e)
        {
            IotDevice iotdevice = JsonMapper.ToObject<IotDevice>(File.ReadAllText(@"..\..\textjson2.txt"));
            Console.WriteLine(iotdevice);
            foreach (var temp in iotdevice.devicelist)
            {
                Console.WriteLine(temp);
            }

        }


    }


    //序列化2 数据模型类
    class Magic
    {
        public int id;

        public string name;

        public int number;

        public override string ToString()
        {
            return string.Format("id:{0},name:{1},numebr:{2}", id, name, number);
        }
    }

    //序列化3 数据模型类
    class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    //嵌套json解析 数据模型类
    public class DevicelistItem
    {
        public string productcode { get; set; }
        public string devicecode { get; set; }
        public string url { get; set; }

        public override string ToString()
        {
            return string.Format("productcode:{0},devicecode:{1},url:{2}", productcode, devicecode, url);
        }
    }

    public class IotDevice
    {
        public int status { get; set; }
        public string apiId { get; set; }
        public string date { get; set; }
        public string message { get; set; }
        public List<DevicelistItem> devicelist { get; set; }
        public override string ToString()
        {
            return string.Format("status:{0},apiId:{1},date:{2},message:{3},devicelist:{4},", status, apiId, date, message, devicelist);
        }


    }


    public class People
    {

        public int status { get; set; }
        public string apiId { get; set; }
        public string date { get; set; }
        public string message { get; set; }
        
        public List<Devicelist> devicelist { get; set; }

        public void aaa()
        {
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(@"..\..\textjson2.txt"));
         
            People people = new People();
          
            people.status = int.Parse(jsonData["status"].ToString());
            people.apiId = jsonData["apiId"].ToString();
            people.date = jsonData["date"].ToString();
            people.message = jsonData["message"].ToString();
            foreach (JsonData item in jsonData["devicelist"])
            {
                Devicelist devicelist = new Devicelist();
                devicelist.url = item["url"].ToString();
                devicelist.devicecode = item["devicecode"].ToString();
                devicelist.productcode = item["productcode"].ToString();
                people.devicelist.Add(devicelist);
            }

            Console.WriteLine(people.devicelist[0].url);

        }

        public class Devicelist
        {
            public string productcode { get; set; }
            public string devicecode { get; set; }
            public string url { get; set; }

        }
    }
}

MDI

using 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);
        }
    }
}

相关推荐

  1. <span style='color:red;'>winform</span><span style='color:red;'>4</span>

    winform4

    2024-07-10 01:16:03      22 阅读
  2. winform布局

    2024-07-10 01:16:03       47 阅读
  3. C# WinForm简介

    2024-07-10 01:16:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 01:16:03       51 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 01:16:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 01:16:03       44 阅读
  4. Python语言-面向对象

    2024-07-10 01:16:03       55 阅读

热门阅读

  1. PlugLink:小微企业自动化运营的魔法盒子

    2024-07-10 01:16:03       26 阅读
  2. Centos7删除MariaDB

    2024-07-10 01:16:03       21 阅读
  3. Docker多阶段构建Node.js应用程序

    2024-07-10 01:16:03       22 阅读
  4. 深入Django(八)

    2024-07-10 01:16:03       22 阅读
  5. 工具指南 - jenkins

    2024-07-10 01:16:03       19 阅读
  6. linux高级编程(OSI/UDP(用户数据报))

    2024-07-10 01:16:03       19 阅读
  7. 【7.29-1800】

    2024-07-10 01:16:03       21 阅读
  8. 源码编译构建LAMP

    2024-07-10 01:16:03       14 阅读
  9. 网络安全筑基篇——反序列化漏洞

    2024-07-10 01:16:03       18 阅读
  10. 网络安全主动防御技术与应用

    2024-07-10 01:16:03       17 阅读
  11. 手写Spring MVC中DispatcherServlet与核心组件底层

    2024-07-10 01:16:03       20 阅读
  12. 移动端Vant-list的二次封装,查询参数重置

    2024-07-10 01:16:03       23 阅读