using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Drawing; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Windows.Controls; using System.Windows.Forms; using Aitex.Core.RT.Log; using Aitex.Core.RT.SCCore; using Aitex.Core.RT.Simulator; using CheckBox = System.Windows.Forms.CheckBox; using TextBox = System.Windows.Forms.TextBox; using UserControl = System.Windows.Forms.UserControl; namespace Aitex.Core.Backend { public partial class SystemConfigView : UserControl { // private Dictionary _scItems = new Dictionary(); public SystemConfigView() { InitializeComponent(); } private void SystemConfigView_Load(object sender, EventArgs e) { this.Dock = DockStyle.Fill; //Dictionary items = new Dictionary(); List groups = new List(); foreach (FieldInfo field in typeof(SCName).GetFields()) { var group = field.Name.Split('_')[0]; var name = field.Name.Split('_')[1]; if (!groups.Contains(group)) { groups.Add(group); TextBox tb = new TextBox(); tb.ReadOnly = true; tb.Enabled = false; tb.Text = group; tb.TextAlign = HorizontalAlignment.Center; tb.BackColor = System.Drawing.SystemColors.MenuHighlight; tb.Location = new System.Drawing.Point(3, 3); tb.Size = new System.Drawing.Size(262, 35); tb.TabIndex = 0; this.flowLayoutPanel1.Controls.Add(tb); } _scItems[name] = typeof(string); TextBox tbName = new TextBox(); tbName.Location = new System.Drawing.Point(3, 3); tbName.ReadOnly = true; tbName.Size = new System.Drawing.Size(268, 21); tbName.Text = name; tbName.Tag = field.Name; TextBox tbValue = new TextBox(); tbValue.Location = new System.Drawing.Point(3, 3); tbValue.Size = new System.Drawing.Size(168, 21); tbValue.Text = SC.GetItemValue(field.Name).ToString(); tbValue.Name = "tb" + field.Name; System.Windows.Forms.Button bt = new System.Windows.Forms.Button(); bt.Location = new System.Drawing.Point(710, 3); bt.Size = new System.Drawing.Size(75, 23); bt.Text = "Set"; bt.UseVisualStyleBackColor = true; bt.Click += bt_Click; bt.Name = "bt" + field.Name; bt.Tag = field.Name; FlowLayoutPanel fl = new FlowLayoutPanel(); fl.Controls.Add(tbName); fl.Controls.Add(tbValue); fl.Controls.Add(bt); fl.Location = new System.Drawing.Point(3, 3); fl.Size = new System.Drawing.Size(853, 33); this.flowLayoutPanel1.Controls.Add(fl); } } void bt_Click(object sender, EventArgs e) { System.Windows.Forms.Button bt = sender as System.Windows.Forms.Button; FlowLayoutPanel fl = bt.Parent as FlowLayoutPanel; TextBox tbName = new TextBox(); TextBox tbValue = new TextBox(); foreach (var v in fl.Controls) { TextBox tb = v as TextBox; if (tb == null) continue; if (tb.ReadOnly) tbName = tb; else { tbValue = tb; } } SC.SetItemValue(bt.Tag.ToString(), tbValue.Text); } private void button1_Click(object sender, EventArgs e) { foreach (var panel in flowLayoutPanel1.Controls) { if (panel.GetType() != typeof(FlowLayoutPanel)) continue; TextBox tbName = new TextBox(); TextBox tbValue = new TextBox(); FlowLayoutPanel fl = panel as FlowLayoutPanel; foreach (var v in fl.Controls) { TextBox tb = v as TextBox; if (tb == null) continue; if (tb.ReadOnly) tbName = tb; else { tbValue = tb; } } tbValue.Text = SC.GetItemValue(tbName.Tag as string).ToString(); } } } }