using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevComponents.DotNetBar; using DevComponents.AdvTree; using Newtonsoft.Json; using System.IO; namespace DataCollectionSystem { public partial class FormMonitorDevice : DevComponents.DotNetBar.Metro.MetroForm { string JsonFile = "MonitorDevices.json"; public static ListMonitorDevices monitorDevices = new ListMonitorDevices(); public FormMonitorDevice() { InitializeComponent(); } private void FormMonitorDevice_Load(object sender, EventArgs e) { if(File.Exists (JsonFile)) { string Json = File.ReadAllText(JsonFile); monitorDevices = JsonConvert.DeserializeObject(Json); } LoadMonitorDevices(); } ListMonitorDevices SaveMonitorDevicesFromTree() { ListMonitorDevices moniDevices = new ListMonitorDevices(); AdvTree treeHead = this.advTree; var nodes = treeHead.Nodes[0].Nodes; foreach(Node node in nodes) { MonitorDevices monitorDevices = new MonitorDevices() ; moniDevices.listMonitorDevices.Add(monitorDevices); monitorDevices.Name = node.Text; monitorDevices.bEnable = node.Checked; foreach (Node nodeSon in node.Nodes) { MonitorDevice monitorDevice = new MonitorDevice(); monitorDevices.devices.Add(monitorDevice); monitorDevice.Name = nodeSon.Text; monitorDevice.bEnable = nodeSon.Enabled; foreach (Node nodeGrandSon in nodeSon.Nodes) { DeviceChannel channel = new DeviceChannel(); channel.bEnable = nodeGrandSon.Checked; channel.Name = nodeGrandSon.Name; monitorDevice.DeviceChannels.Add(channel); } } } return moniDevices; } void SaveMonitorDevices() { ListMonitorDevices _monitorDevices = SaveMonitorDevicesFromTree(); string Json = JsonConvert.SerializeObject(_monitorDevices); File.WriteAllText( JsonFile, Json); } void LoadMonitorDevices() { foreach (var _monitorDevices in monitorDevices.listMonitorDevices) { Node nodeType = AddNode(advTree.Nodes[0], _monitorDevices.Name, _monitorDevices.bEnable); nodeType.Text = _monitorDevices.Name; List devices = _monitorDevices.devices; foreach (var device in devices) { Node nodeDevice = AddNode( nodeType, device.Name, device.bEnable); var deviceChannels = device.DeviceChannels; foreach (var deviceChannel in deviceChannels) { AddNode(nodeDevice, deviceChannel.Name, deviceChannel.bEnable); } } } } public Node AddNode( Node nodeParent, string name,Boolean bChecked) { Node nodeSample = new Node(); nodeParent.Nodes.AddRange(new DevComponents.AdvTree.Node[] { nodeSample}); // // nodeSample // nodeSample.CheckBoxVisible = true; nodeSample.Expanded = true; nodeSample.Name = name; nodeSample.Text = name; nodeSample.Checked = bChecked; return nodeSample; } private Boolean checkHasSampleName(string name, Node nodeParent) { Boolean bHas = false; foreach(Node node in nodeParent.Nodes) { if(node.Text==name) { MessageBox.Show($"{name}重复!\n", "提示", MessageBoxButtons.OK); bHas = true; break; } } return bHas; } private void BtnAdd_Click(object sender, EventArgs e) { Node Parent = advTree.Nodes[0]; string TypeName = textBoxName.Text; if(!string.IsNullOrEmpty(TypeName)) { if (!checkHasSampleName(TypeName, Parent)) { AddNode(Parent,TypeName,true); } } } private void BtnRemove_Click(object sender, EventArgs e) { int deep = 1; Node nodeSelect = advTree.SelectedNode; if (nodeSelect != null) { while (nodeSelect.Level > deep) { nodeSelect = nodeSelect.Parent; } nodeSelect.Parent.Nodes.Remove(nodeSelect); } } private void BtnAddSon_Click(object sender, EventArgs e) { string TypeName = textBoxName.Text; Node NodeSelect = advTree.SelectedNode; int level = NodeSelect.Level; if(level==1) { Node Parent = NodeSelect; if (!checkHasSampleName(TypeName, Parent)) { AddNode(Parent , TypeName, true); } } } private void BtnSave_Click(object sender, EventArgs e) { SaveMonitorDevices(); } private void BtnRMson_Click(object sender, EventArgs e) { int deep = 2; Node nodeSelect = advTree.SelectedNode; if (nodeSelect != null) { while (nodeSelect.Level > deep) { nodeSelect = nodeSelect.Parent; } if (nodeSelect.Level == deep) nodeSelect.Parent.Nodes.Remove(nodeSelect); } } private void BtnRemoveGrandSon_Click(object sender, EventArgs e) { int deep = 3; Node nodeSelect = advTree.SelectedNode; if (nodeSelect != null) { while (nodeSelect.Level > deep) { nodeSelect = nodeSelect.Parent; } if (nodeSelect.Level == deep) nodeSelect.Parent.Nodes.Remove(nodeSelect); } } private void BtnAddGrandSon_Click(object sender, EventArgs e) { string TypeName = textBoxName.Text; Node NodeSelect = advTree.SelectedNode; int level = NodeSelect.Level; if (level == 2) { Node Parent = NodeSelect; if (!checkHasSampleName(TypeName, Parent)) { AddNode(Parent, TypeName, true); } } } } }