//打开一个编辑画面 public void OpenOneForm(String name) { //需新增功能: 所有form只打开一次 for (int i = 0; i < editFormList.Count; i++) { if (editFormList[i].currentName == name) { editFormList[i].Show(); return; } } RunTimeForm m_RTeditWindow = new RunTimeForm(this); try { string fileName = myProjectPath + name + ".xml"; HostControl hc = _hostSurfaceManager.LoadNewHost(fileName); m_RTeditWindow.parentForm = this; m_RTeditWindow.currentName = name; m_RTeditWindow.Text = name; m_RTeditWindow.TabText = name; editFormList.Add(m_RTeditWindow); //填充画面 UserControl f = new UserControl(); UserControl user = (UserControl)_hostSurfaceManager.basicHostLoader.mComponents[0]; f.BackColor = user.BackColor; f.BackgroundImage = user.BackgroundImage; f.BackgroundImageLayout = user.BackgroundImageLayout; f.BorderStyle = user.BorderStyle; f.Font = user.Font; f.ForeColor = user.ForeColor; f.Size = user.Size; f.Location = new Point(0, 0);// user.Location; f.Name = user.Name; #region 填充元件 string nodeString = null; List <string> dllFailList = new List <string>(); //自定义控件出现错误的列表 for (int i = 1; i < _hostSurfaceManager.basicHostLoader.mComponents.Count; i++) { Type t = _hostSurfaceManager.basicHostLoader.mComponents[i].GetType(); //自定义控件的处理--> nodeString = "Components/AddedComponent[@Name=\"" + t.Name + "\"]";//注意这里AddedComponent作为与原先的区别 XmlNode tmpXNode = mXDoc.SelectSingleNode(nodeString); if (tmpXNode != null) { //XmlNode test = tmpXNode.SelectSingleNode("Asm"); string asmStr = tmpXNode.Attributes["Asm"].Value; Assembly assembly = null; if (asmStr.Substring(asmStr.Length - 3) == "dll" || asmStr.Substring(asmStr.Length - 3) == "DLL") { if (File.Exists(@dllmng.DLLPATH + asmStr)) { assembly = Assembly.LoadFile(dllmng.DLLPATH + asmStr); } else { if (!dllFailList.Contains("Can not find DLL: " + asmStr + " in file " + dllmng.DLLPATH)) { dllFailList.Add("Can not find DLL: " + asmStr + " in file " + dllmng.DLLPATH); } continue; } } else { if (File.Exists(@dllmng.DLLPATH + asmStr + ".dll")) { assembly = Assembly.LoadFile(dllmng.DLLPATH + asmStr + ".dll"); } else { if (!dllFailList.Contains("Can not find DLL: " + asmStr + ".dll" + " in file " + dllmng.DLLPATH)) { dllFailList.Add("Can not find DLL: " + asmStr + ".dll" + " in file " + dllmng.DLLPATH); } continue; } } Type type = assembly.GetType(t.FullName.ToString()); //类名称 Object obj = System.Activator.CreateInstance(type); Object objInXml = _hostSurfaceManager.basicHostLoader.mComponents[i]; Type typeInXml = _hostSurfaceManager.basicHostLoader.mComponents[i].GetType(); ArrayList mObjectAttribs = new ArrayList(); if (tmpXNode != null) { try { XmlNodeList tmpXPropLst = tmpXNode.SelectNodes("Propertys/Property"); XmlNode m_tmpXNode; IEnumerator tmpIe = tmpXPropLst.GetEnumerator(); while (tmpIe.MoveNext()) { m_tmpXNode = tmpIe.Current as XmlNode; mObjectAttribs.Add(m_tmpXNode.Attributes["Name"].Value); } } catch { } } foreach (string arr in mObjectAttribs) { try { object arrObj = typeInXml.GetProperty(arr).GetValue(objInXml, null); //get type.GetProperty(arr).SetValue(obj, arrObj, null); //set } catch (Exception ex) { MessageBox.Show(ex.Message); } } f.Controls.Add((Control)obj); //<---- } if (t.Name.Equals("PictureBox")) { Library.PictureBox control = (Library.PictureBox)Activator.CreateInstance(t); Library.PictureBox cs = (Library.PictureBox)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.BorderStyle = cs.BorderStyle; control.Image = cs.Image; control.SizeMode = cs.SizeMode; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; //增加运行时标志,目的仅为可见性使用!!! control.isVisible = cs.isVisible; //增加退出keydown 事件 control.KeyDown += new KeyEventHandler(control_KeyDown); f.Controls.Add(control); } if (t.Name.Equals("Button")) { Library.Button control = (Library.Button)Activator.CreateInstance(t); Library.Button cs = (Library.Button)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Image = cs.Image; control.ImageAlign = cs.ImageAlign; control.Font = cs.Font; control.ForeColor = cs.ForeColor; control.FlatStyle = cs.FlatStyle; control.Text = cs.Text; control.TextAlign = cs.TextAlign; control.TextImageRelation = cs.TextImageRelation; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.KeyDown += new KeyEventHandler(control_KeyDown); f.Controls.Add(control); } if (t.Name.Equals("SendButton")) { Library.SendButton control = (Library.SendButton)Activator.CreateInstance(t); Library.SendButton cs = (Library.SendButton)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.BorderStyle = cs.BorderStyle; control.Font = cs.Font; control.ForeColor = cs.ForeColor; control.Text = cs.Text; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; //增加运行时标志,目的仅为可见性使用!!! // control.isVisible = cs.isVisible; control.ID = cs.ID; control.RelatedDeviceType = cs.RelatedDeviceType; control.BoardNumber = cs.BoardNumber; control.RelatedPort = cs.RelatedPort; control.DeviceName = cs.DeviceName; control.rtdm = rtdm; //control.Enabled = false; //选中无光标闪烁 //增加退出keydown 事件 control.KeyDown += new KeyEventHandler(control_KeyDown); f.Controls.Add(control); } if (t.Name.Equals("TextBox")) { Library.TextBox control = (Library.TextBox)Activator.CreateInstance(t); Library.TextBox cs = (Library.TextBox)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.BorderStyle = cs.BorderStyle; control.Font = cs.Font; control.ForeColor = cs.ForeColor; control.Text = cs.Text; control.TextAlign = cs.TextAlign; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; //增加运行时标志,目的仅为可见性使用!!! control.isVisible = cs.isVisible; control.ID = cs.ID; control.RelatedDeviceType = cs.RelatedDeviceType; control.BoardNumber = cs.BoardNumber; control.RelatedPort = cs.RelatedPort; control.DeviceName = cs.DeviceName; control.rtdm = rtdm; //control.Enabled = false; //选中无光标闪烁 //增加退出keydown 事件 control.KeyDown += new KeyEventHandler(control_KeyDown); f.Controls.Add(control); } if (t.Name.Equals("Lable")) { Library.Lable control = (Library.Lable)Activator.CreateInstance(t); Library.Lable cs = (Library.Lable)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.BorderStyle = cs.BorderStyle; control.Font = cs.Font; control.ForeColor = cs.ForeColor; control.Text = cs.Text; control.TextAlign = cs.TextAlign; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; //增加退出keydown 事件 control.KeyDown += new KeyEventHandler(control_KeyDown); f.Controls.Add(control); } if (t.Name.Equals("LDDS")) { Library.LDDS.Module control = (Library.LDDS.Module)Activator.CreateInstance(t); Library.LDDS.Module cs = (Library.LDDS.Module)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.InterfaceName = cs.InterfaceName; control.OnDrawLineClick += new Library.LDDS.Module.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("ArrowLink")) { Library.LDDS.ArrowLink control = (Library.LDDS.ArrowLink)Activator.CreateInstance(t); Library.LDDS.ArrowLink cs = (Library.LDDS.ArrowLink)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.InterfaceName = cs.InterfaceName; control.ArrowName = cs.ArrowName; if (control.ArrowName.ToString() == "WaterMixingArrow") { this.BackgroundImage = global::Designer.Properties.Resources.WaterMixingArrow_new; } else if (control.ArrowName.ToString() == "ThermistorArrow") { this.BackgroundImage = global::Designer.Properties.Resources.ThermistorArrow; } else if (control.ArrowName.ToString() == "VibTestingArrow") { this.BackgroundImage = global::Designer.Properties.Resources.VibTestingArrow; } else if (control.ArrowName.ToString() == "FlowtestingArrow") { this.BackgroundImage = global::Designer.Properties.Resources.FlowTestingArrow_new; } else if (control.ArrowName.ToString() == "LengthArrow") { this.BackgroundImage = global::Designer.Properties.Resources.LengthArrow; } else if (control.ArrowName.ToString() == "HumidityArrow") { this.BackgroundImage = global::Designer.Properties.Resources.HumidityArrow; } //control.BackgroundImage = global::Library.Properties.Resources.VibTestingArrow; control.OnDrawLineClick += new Library.LDDS.Module.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Regenerator1")) { Library.LDDS.Regenerator1 control = (Library.LDDS.Regenerator1)Activator.CreateInstance(t); Library.LDDS.Regenerator1 cs = (Library.LDDS.Regenerator1)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.BoardNumber = cs.BoardNumber; control.InterfaceName = cs.InterfaceName; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Regenerator1.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Regenerator2")) { Library.LDDS.Regenerator2 control = (Library.LDDS.Regenerator2)Activator.CreateInstance(t); Library.LDDS.Regenerator2 cs = (Library.LDDS.Regenerator2)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.BoardNumber = cs.BoardNumber; control.InterfaceName = cs.InterfaceName; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Regenerator2.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Regenerator3")) { Library.LDDS.Regenerator3 control = (Library.LDDS.Regenerator3)Activator.CreateInstance(t); Library.LDDS.Regenerator3 cs = (Library.LDDS.Regenerator3)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.BoardNumber = cs.BoardNumber; control.InterfaceName = cs.InterfaceName; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Regenerator2.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Regenerator4")) { Library.LDDS.Regenerator4 control = (Library.LDDS.Regenerator4)Activator.CreateInstance(t); Library.LDDS.Regenerator4 cs = (Library.LDDS.Regenerator4)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.BoardNumber = cs.BoardNumber; control.InterfaceName = cs.InterfaceName; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Regenerator2.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Dehumidifier1")) { Library.LDDS.Dehumidifier1 control = (Library.LDDS.Dehumidifier1)Activator.CreateInstance(t); Library.LDDS.Dehumidifier1 cs = (Library.LDDS.Dehumidifier1)_hostSurfaceManager.basicHostLoader.mComponents[i]; DataBus.DataAccess.CData_PointTable dataPT = new DataBus.DataAccess.CData_PointTable(); control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.DeviceName = control.DeviceName; control.InterfaceName = cs.InterfaceName; control.BoardNumber = cs.BoardNumber; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Dehumidifier1.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Dehumidifier2")) { Library.LDDS.Dehumidifier2 control = (Library.LDDS.Dehumidifier2)Activator.CreateInstance(t); Library.LDDS.Dehumidifier2 cs = (Library.LDDS.Dehumidifier2)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.InterfaceName = cs.InterfaceName; control.BoardNumber = cs.BoardNumber; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Dehumidifier2.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Dehumidifier3")) { Library.LDDS.Dehumidifier3 control = (Library.LDDS.Dehumidifier3)Activator.CreateInstance(t); Library.LDDS.Dehumidifier3 cs = (Library.LDDS.Dehumidifier3)_hostSurfaceManager.basicHostLoader.mComponents[i]; DataBus.DataAccess.CData_PointTable dataPT = new DataBus.DataAccess.CData_PointTable(); control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.DeviceName = control.DeviceName; control.InterfaceName = cs.InterfaceName; control.BoardNumber = cs.BoardNumber; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Dehumidifier1.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("Dehumidifier4")) { Library.LDDS.Dehumidifier4 control = (Library.LDDS.Dehumidifier4)Activator.CreateInstance(t); Library.LDDS.Dehumidifier4 cs = (Library.LDDS.Dehumidifier4)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.BackColor = cs.BackColor; control.Size = cs.Size; control.Location = cs.Location; control.Name = cs.Name; control.InterfaceName = cs.InterfaceName; control.BoardNumber = cs.BoardNumber; control.rtdm = rtdm; control.OnDrawLineClick += new Library.LDDS.Dehumidifier2.OnDrawLineEventHandle(Control_OnDrawLineClick); f.Controls.Add(control); } if (t.Name.Equals("AtoMain")) { // AutotunerFinVerOne.AtoMain control = new AutotunerFinVerOne.AtoMain(); // AutotunerFinVerOne.AtoMain cs = (AutotunerFinVerOne.AtoMain)_hostSurfaceManager.basicHostLoader.mComponents[i]; // control.ret_val = "AHU B4_309 Supply Air Temp Control Loop"; // cs.ret_val = "AHU B4_309 Supply Air Temp Control Loop"; // control.BackColor = cs.BackColor; // control.Size = cs.Size; // control.Location = cs.Location; // //control.Name = cs.Name; // f.Controls.Add(control); } //if (t.Name.Equals("ButtonCheck")) //{ // // SBB_ACMV.Controls.ButtonCheck control = (SBB_ACMV.Controls.ButtonCheck)Activator.CreateInstance(t); // // SBB_ACMV.Controls.ButtonCheck cs = (SBB_ACMV.Controls.ButtonCheck)_hostSurfaceManager.basicHostLoader.mComponents[i]; // // control.BoardNo = cs.BoardNo; // // //control.BoardNoText = cs.BoardNoText; // // control.loopNo = cs.loopNo; // // //control.loopNoText = cs.loopNoText; // // control.BackColor = cs.BackColor; // // control.Name = cs.Name; // // control.Size = cs.Size; // // control.Location = cs.Location; // // //control.Name = cs.Name; // // f.Controls.Add(control); //} if (t.Name.Equals("SendButton")) { Library.SendButton control = (Library.SendButton)Activator.CreateInstance(t); Library.SendButton cs = (Library.SendButton)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.PortData = cs.PortData; control.PortBind = cs.PortBind; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.DeviceName = cs.DeviceName; control.BackColor = cs.BackColor; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; //control.Name = cs.Name; f.Controls.Add(control); } if (t.Name.Equals("statusIndicator")) { Library.statusIndicator control = (Library.statusIndicator)Activator.CreateInstance(t); Library.statusIndicator cs = (Library.statusIndicator)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.DeviceName = cs.DeviceName; control.BackColor = cs.BackColor; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; //control.Name = cs.Name; f.Controls.Add(control); control.rtdm = rtdm; } if (t.Name.Equals("levelmeter")) { Library.Common.levelmeter control = (Library.Common.levelmeter)Activator.CreateInstance(t); Library.Common.levelmeter cs = (Library.Common.levelmeter)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.DeviceName = cs.DeviceName; control.BackColor = cs.BackColor; control.Value = cs.Value; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; control.rtdm = rtdm; f.Controls.Add(control); } if (t.Name.Equals("ButtonCheck")) { Library.Common.ButtonCheck control = (Library.Common.ButtonCheck)Activator.CreateInstance(t); Library.Common.ButtonCheck cs = (Library.Common.ButtonCheck)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.PortData = cs.PortData; control.PortBind = cs.PortBind; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.DeviceName = cs.DeviceName; control.BackColor = cs.BackColor; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; control.CheckStyleX = cs.CheckStyleX; control.CheckCurrentState(); //control.Name = cs.Name; f.Controls.Add(control); } if (t.Name.Equals("ButtonCheckFun")) { Library.Common.ButtonCheckFun control = (Library.Common.ButtonCheckFun)Activator.CreateInstance(t); Library.Common.ButtonCheckFun cs = (Library.Common.ButtonCheckFun)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.PortData = cs.PortData; control.PortBind = cs.PortBind; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.DeviceName = cs.DeviceName; control.BackColor = cs.BackColor; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; control.CheckStyleX = cs.CheckStyleX; control.CheckCurrentState(); //control.Name = cs.Name; f.Controls.Add(control); } //if (t.Name.Equals("OnOff")) //{ // Library.Common.CommunicationOnOff control = (Library.Common.CommunicationOnOff)Activator.CreateInstance(t); // Library.Common.CommunicationOnOff cs = (Library.Common.CommunicationOnOff)_hostSurfaceManager.basicHostLoader.mComponents[i]; // control.PortData = cs.PortData; // control.PortBind = cs.PortBind; // control.RelatedPort = cs.RelatedPort; // control.BoardNumber = cs.BoardNumber; // control.DeviceName = cs.DeviceName; // control.BackColor = cs.BackColor; // control.Name = cs.Name; // control.Size = cs.Size; // control.Location = cs.Location; // control.CheckStyleX = cs.CheckStyleX; // control.CheckCurrentState(); // //control.Name = cs.Name; // f.Controls.Add(control); //} if (t.Name.Equals("Alarm")) { Library.Common.Alarm control = (Library.Common.Alarm)Activator.CreateInstance(t); Library.Common.Alarm cs = (Library.Common.Alarm)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.UpLimit = cs.UpLimit; control.DownLimit = cs.DownLimit; control.BackColor = cs.BackColor; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; control.rtdm = rtdm; //control.Name = cs.Name; f.Controls.Add(control); } if (t.Name.Equals("RunState")) { Library.Common.RunState control = (Library.Common.RunState)Activator.CreateInstance(t); Library.Common.RunState cs = (Library.Common.RunState)_hostSurfaceManager.basicHostLoader.mComponents[i]; control.RelatedPort = cs.RelatedPort; control.BoardNumber = cs.BoardNumber; control.BackColor = cs.BackColor; control.Name = cs.Name; control.Size = cs.Size; control.Location = cs.Location; control.rtdm = rtdm; f.Controls.Add(control); } if (t.Name.Equals("NumericUpDownEx")) { // SBB_ACMV.Controls.NumericUpDownEx control = (SBB_ACMV.Controls.NumericUpDownEx)Activator.CreateInstance(t); // SBB_ACMV.Controls.NumericUpDownEx cs = (SBB_ACMV.Controls.NumericUpDownEx)_hostSurfaceManager.basicHostLoader.mComponents[i]; // control.BoardNo = cs.BoardNo; // //control.BoardNoText = cs.BoardNoText; // control.PortNo = cs.PortNo; // //control.PortNoText = cs.PortNoText; // control.BackColor = cs.BackColor; // control.Name = cs.Name; // control.Size = cs.Size; // control.Location = cs.Location; // //control.Name = cs.Name; // f.Controls.Add(control); } } //自定义dll错误信息显示 string infoStr = ""; foreach (string dllFail in dllFailList) { infoStr += dllFail + "\r\n"; } if (infoStr != "") { MessageBox.Show(infoStr + "\r\n" + "Please Check!", "Custom Control(DLL) Error Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } //全屏幕form // FormState formState = new FormState(); // this.SetVisibleCore(false); // formState.Maximize(m_RTeditWindow, false); // this.SetVisibleCore(true); //放置到主窗体 m_RTeditWindow.panel1.Controls.Add(f); m_RTeditWindow.Show(m_RTmainWindow.ControlsDockPanel); #endregion f.KeyDown += new KeyEventHandler(f_KeyDown); } catch (Exception) { MessageBox.Show("Load Error!", "Load Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } }