private void EventHnadler(string eventName, Control winControl) { int index = listWinControls.IndexOf(winControl); if (index >= 0 && index < listWinControls.Count) { TlControl tlControl = listTlControls[index]; if (!tlControl.DicEvents.ContainsKey(eventName)) { // 当配置文件中的该控件未处理eventName对应的事件,直接跳过. return; } string value = tlControl.DicEvents[eventName]; int pos = value.IndexOf('('); if (pos >= 0) { string funName = value.Substring(0, pos); string[] funParams = value.Substring(pos + 1, value.Length - pos - 2).Split(',');//最后字符为')' List <Control> listControls = new List <Control>(); foreach (string funParam in funParams) { foreach (Control cl in listWinControls) { if (cl.Name == funParam) { listControls.Add(cl); break; } } } dicEventHandlers[funName](listControls.ToArray()); } } }
private void ParsingControls(XmlNode controlsNode, TlControl tlParentControl) { string type; foreach (XmlNode clNode in controlsNode.ChildNodes) { if (clNode.Name == "Control") { TlControl tlControl = null; type = clNode.Attributes["Type"].Value; if (type == "GroupBox") { tlControl = new TlGroupBox(); ((TlGroupBox)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); //((TlGroupBox)tlControl).Text = clNode.Attributes["Text"].Value; } else if (type == "Label") { tlControl = new TlLabel(); ((TlLabel)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlLabel)tlControl).AutoSize = clNode.Attributes["AutoSize"].Value.ToString() == "true"; //((TlLabel)tlControl).Text = clNode.Attributes["Text"].Value; } else if (type == "ComboBox") { tlControl = new TlComboBox(); ((TlComboBox)tlControl).DropDownStyle = Convert.ToInt32(clNode.Attributes["DropDownStyle"].Value); string items = clNode.Attributes["Items"].Value; ((TlComboBox)tlControl).ListItems.Clear(); ((TlComboBox)tlControl).ListItems.AddRange(items.Split(',')); } else if (type == "TextBox") { tlControl = new TlTextBox(); } else if (type == "Button") { tlControl = new TlButton(); } else if (type == "ButtonX") { tlControl = new TlButtonX(); if (clNode.Attributes["Image"] != null) { ((TlButtonX)tlControl).Image = clNode.Attributes["Image"].Value; } } else if (type == "CheckBox") { tlControl = new TlCheckBox(); ((TlCheckBox)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlCheckBox)tlControl).AutoSize = clNode.Attributes["AutoSize"].Value.ToString() == "true"; //((TlCheckBox)tlControl).Text = clNode.Attributes["Text"].Value; ((TlCheckBox)tlControl).Checked = clNode.Attributes["Checked"].Value == "true"; } else if (type == "RadioButton") { tlControl = new TlRadioButton(); ((TlRadioButton)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlRadioButton)tlControl).AutoSize = clNode.Attributes["AutoSize"].Value.ToString() == "true"; //((TlRadioButton)tlControl).Text = clNode.Attributes["Text"].Value; ((TlRadioButton)tlControl).Checked = clNode.Attributes["Checked"].Value == "true"; if (clNode.Attributes["UseVisualStyleBackColor"] != null) { ((TlRadioButton)tlControl).UseVisualStyleBackColor = clNode.Attributes["UseVisualStyleBackColor"].Value == "true"; } } else if (type == "ListBox") { tlControl = new TlListBox(); } else if (type == "Panel" || type == "PanelControl" || type == "GroupPanel") { if (type == "Panel") { tlControl = new TlPanel(); } else { if (type == "PanelControl") { tlControl = new TlPanelControl(); } else { if (type == "GroupPanel") { tlControl = new TlGroupPanel(); } else { } } ((TlPanelControl)tlControl).ShowFocusRectangle = clNode.Attributes["ShowFocusRectangle"].Value.ToString() == "true"; ((TlPanelControl)tlControl).ColorSchemeStyle = Convert.ToInt32(clNode.Attributes["ColorSchemeStyle"].Value.ToString()); if (clNode.Attributes["CanvasColor"] != null) { ((TlPanelControl)tlControl).CanvasColor = ColorTranslator.FromHtml(clNode.Attributes["CanvasColor"].Value); } } ((TlPanel)tlControl).AutoScroll = clNode.Attributes["AutoScroll"].Value.ToString() == "true"; } else if (type == "DateTimePicker") { tlControl = new TlDateTimePicker(); ((TlDateTimePicker)tlControl).ShowUpDown = clNode.Attributes["ShowUpDown"].Value.ToString() == "true"; ((TlDateTimePicker)tlControl).Format = Convert.ToInt32(clNode.Attributes["Format"].Value); ((TlDateTimePicker)tlControl).CustomFormat = clNode.Attributes["CustomFormat"].Value; } else if (type == "PictureBox") { tlControl = new TlPictureBox(); ((TlPictureBox)tlControl).BackColor = ColorTranslator.FromHtml(clNode.Attributes["BackColor"].Value); } else if (type == "ExpandableSplitter") { tlControl = new TlExpandableSplitter(); ((TlExpandableSplitter)tlControl).Style = Convert.ToInt32(clNode.Attributes["Style"].Value); ((TlExpandableSplitter)tlControl).ExpandableControl = clNode.Attributes["ExpandableControl"].Value.ToString(); } else if (type == "AdvTree") { tlControl = new TlAdvTree(); ((TlAdvTree)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlAdvTree)tlControl).AllowDrop = clNode.Attributes["AllowDrop"].Value.ToString() == "true"; } else if (type == "Slider") { tlControl = new TlSlider(); ((TlSlider)tlControl).Maximum = Convert.ToInt32(clNode.Attributes["Maximum"].Value); ((TlSlider)tlControl).Minimum = Convert.ToInt32(clNode.Attributes["Minimum"].Value); ((TlSlider)tlControl).Value = Convert.ToInt32(clNode.Attributes["Value"].Value); } else if (type == "ucAiTemperature") { tlControl = new TlAiTemperature(); ((TlAiTemperature)tlControl).ClmbFileName = clNode.Attributes["ClmbFileName"].Value.ToString(); } else if (type == "ucTemperatureReport") { tlControl = new TlTemperatureReport(); ((TlTemperatureReport)tlControl).TmbFileName = clNode.Attributes["TmbFileName"].Value.ToString(); } else if (type == "RibbonBar") { tlControl = new TlRibbonBar(); ((TlRibbonBar)tlControl).Style = Convert.ToInt32(clNode.Attributes["Style"].Value); ((TlRibbonBar)tlControl).TitleVisible = clNode.Attributes["TitleVisible"].Value.ToString() == "true"; ((TlRibbonBar)tlControl).AutoOverflowEnabled = clNode.Attributes["AutoOverflowEnabled"].Value.ToString() == "true"; ((TlRibbonBar)tlControl).ContainerControlProcessDialogKey = clNode.Attributes["ContainerControlProcessDialogKey"].Value.ToString() == "true"; if (clNode.Attributes["Items"] != null) { string items = clNode.Attributes["Items"].Value; ((TlRibbonBar)tlControl).ListItems.Clear(); ((TlRibbonBar)tlControl).ListItems.AddRange(items.Split(',')); } } else { //continue; //未知或未实现的类型跳过 tlControl = new TlControl(); } tlControl.TlParentControl = tlParentControl; if (clNode.Attributes["BackColor"] != null) { tlControl.BackColor = ColorTranslator.FromHtml(clNode.Attributes["BackColor"].Value); } tlControl.Type = clNode.Attributes["Type"].Value; tlControl.Name = clNode.Attributes["Name"].Value; tlControl.X = Convert.ToInt32(clNode.Attributes["X"].Value); tlControl.Y = Convert.ToInt32(clNode.Attributes["Y"].Value); tlControl.Width = Convert.ToInt32(clNode.Attributes["Width"].Value); tlControl.Height = Convert.ToInt32(clNode.Attributes["Height"].Value); tlControl.TabIndex = Convert.ToInt32(clNode.Attributes["TabIndex"].Value); tlControl.Visable = clNode.Attributes["Visable"].Value.ToString() == "true"; tlControl.Enable = clNode.Attributes["Enable"].Value.ToString() == "true"; tlControl.TabStop = clNode.Attributes["TabStop"].Value.ToString() == "true"; tlControl.FontName = clNode.Attributes["FontName"].Value; tlControl.Dock = Convert.ToInt32(clNode.Attributes["Dock"].Value); if (clNode.Attributes["Text"] != null) { tlControl.Text = clNode.Attributes["Text"].Value; } string[] events = clNode.Attributes["Events"].Value.Split('|'); tlControl.DicEvents = new Dictionary <string, string>(); foreach (string et in events) { if (et.Trim() != "") { int pos = et.IndexOf(':'); string eventName = et.Substring(0, pos); string eventHandler = et.Substring(pos + 1); tlControl.DicEvents.Add(eventName, eventHandler); } } listTlControls.Add(tlControl); foreach (XmlNode clChildNode in clNode.ChildNodes) { if (clChildNode.Name == "Controls") { ParsingControls(clChildNode, tlControl); } } } } }
private void ParsingControls(XmlNode controlsNode, TlControl tlParentControl) { string type; foreach (XmlNode clNode in controlsNode.ChildNodes) { if (clNode.Name == "Control") { TlControl tlControl = null; type = clNode.Attributes["Type"].Value; if (type == "GroupBox") { tlControl = new TlGroupBox(); ((TlGroupBox)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlGroupBox)tlControl).Text = clNode.Attributes["Text"].Value; } else if (type == "Label") { tlControl = new TlLabel(); ((TlLabel)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlLabel)tlControl).AutoSize = clNode.Attributes["AutoSize"].Value.ToString() == "true"; ((TlLabel)tlControl).Text = clNode.Attributes["Text"].Value; } else if (type == "ComboBox") { tlControl = new TlComboBox(); ((TlComboBox)tlControl).DropDownStyle = Convert.ToInt32(clNode.Attributes["DropDownStyle"].Value); string items = clNode.Attributes["Items"].Value; ((TlComboBox)tlControl).ListItems.Clear(); ((TlComboBox)tlControl).ListItems.AddRange(items.Split(',')); } else if (type == "TextBox") { tlControl = new TlTextBox(); } else if (type == "Button") { tlControl = new TlButton(); ((TlButton)tlControl).Text = clNode.Attributes["Text"].Value; } else if (type == "CheckBox") { tlControl = new TlCheckBox(); ((TlCheckBox)tlControl).ForeColor = ColorTranslator.FromHtml(clNode.Attributes["ForeColor"].Value); ((TlCheckBox)tlControl).AutoSize = clNode.Attributes["AutoSize"].Value.ToString() == "true"; ((TlCheckBox)tlControl).Text = clNode.Attributes["Text"].Value; } else if (type == "ListBox") { tlControl = new TlListBox(); } else if (type == "Panel") { tlControl = new TlPanel(); ((TlPanel)tlControl).AutoScroll = clNode.Attributes["AutoScroll"].Value.ToString() == "true"; } else if (type == "DateTimePicker") { tlControl = new TlDateTimePicker(); ((TlDateTimePicker)tlControl).ShowUpDown = clNode.Attributes["ShowUpDown"].Value.ToString() == "true"; ((TlDateTimePicker)tlControl).Format = Convert.ToInt32(clNode.Attributes["Format"].Value); ((TlDateTimePicker)tlControl).CustomFormat = clNode.Attributes["CustomFormat"].Value; } else { continue; //未知或未实现的类型跳过 } tlControl.TlParentControl = tlParentControl; tlControl.Type = clNode.Attributes["Type"].Value; tlControl.Name = clNode.Attributes["Name"].Value; tlControl.X = Convert.ToInt32(clNode.Attributes["X"].Value); tlControl.Y = Convert.ToInt32(clNode.Attributes["Y"].Value); tlControl.Width = Convert.ToInt32(clNode.Attributes["Width"].Value); tlControl.Height = Convert.ToInt32(clNode.Attributes["Height"].Value); tlControl.TabIndex = Convert.ToInt32(clNode.Attributes["TabIndex"].Value); tlControl.Visable = clNode.Attributes["Visable"].Value.ToString() == "true"; tlControl.Enable = clNode.Attributes["Enable"].Value.ToString() == "true"; tlControl.TabStop = clNode.Attributes["TabStop"].Value.ToString() == "true"; tlControl.FontName = clNode.Attributes["FontName"].Value; tlControl.Dock = Convert.ToInt32(clNode.Attributes["Dock"].Value); string [] events = clNode.Attributes["Events"].Value.Split('|'); tlControl.DicEvents = new Dictionary <string, string>(); foreach (string et in events) { if (et.Trim() != "") { int pos = et.IndexOf(':'); string eventName = et.Substring(0, pos); string eventHandler = et.Substring(pos + 1); tlControl.DicEvents.Add(eventName, eventHandler); } } listTlControls.Add(tlControl); foreach (XmlNode clChildNode in clNode.ChildNodes) { if (clChildNode.Name == "Controls") { ParsingControls(clChildNode, tlControl); } } } } }