Winfrom-4

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Log4net是一个强大的日志记录框架,常用于在Winform应用程序中记录和管理日志。下面是一个Winform log4net演示的简要说明: 首先,我们需要通过NuGet包管理器安装log4net库。打开Visual Studio,在项目中右键单击“引用”,然后选择“管理NuGet程序包”。在搜索框中输入“log4net”,找到log4net并点击“安装”按钮进行安装。 接下来,在Winform应用程序的主入口函数(例如Main函数)中添加以下代码: using log4net; class Program { private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); [STAThread] static void Main() { log4net.Config.BasicConfigurator.Configure(); // 配置log4net Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); log.Debug("应用程序启动"); // 输出调试级别的日志信息 Application.Run(new MainForm()); log.Debug("应用程序退出"); // 输出调试级别的日志信息 } } 在上述代码中,我们首先创建一个ILog对象log,以便在整个应用程序中使用它来记录日志。 然后,我们通过调用log4net.Config.BasicConfigurator.Configure()来配置log4net。该配置方法默认将日志消息输出到控制台。 在Main函数中,我们使用log.Debug方法记录了应用程序的启动和退出事件。Debug级别的日志信息通常用于开发和调试目的。 最后,我们通过Application.Run方法启动了主窗口,并在应用程序退出时再次使用log.Debug记录了应用程序的退出事件。 为了让log4net正常工作,我们还需要在应用程序的配置文件(.config)中添加相关的配置信息。 上述的Winform log4net演示,让我们能够方便地记录和管理应用程序的运行日志,有助于开发和故障排查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值