using DrawGraph; using DrawGraphManagement.MyUserControl; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Reflection; using System.Windows.Forms; namespace DrawGraphManagement { public partial class AreaManageForm : Form { PackObjBase bb = null; PackObjBase selectPoB = null; //string outFlat = "||"; //string asFileName = ""; private TreeNode selectNode = null; //选中的结点 private PrintDocument pDoc; protected PackObjManager poManager = null; private AreaManageBase areaManage = null; public PageStatus pageStatus = PageStatus.Create; //private bool isAddNodeDown = true; //增加节点时是否是一层一层往下加,为真时是多层级的,为假是一层 private int borderWidth = 600; private int borderHeight = 800; private bool isViewBackImg = true; public AreaManageForm() { InitializeComponent(); poManager = new PackObjManager(); btnOk.DialogResult = DialogResult.OK; } /// /// 范围管理器构造方法 /// /// 范围管理器 /// 默认使用自己的组件 public AreaManageForm(AreaManageBase _areaMange, PageStatus _pageStatus = PageStatus.Create, int _borderWidth = 600, int _borderHeight = 800) { InitializeComponent(); btnOk.DialogResult = DialogResult.OK; areaManage = _areaMange; poManager = areaManage.PackManage; pageStatus = _pageStatus; borderWidth = _borderWidth; borderHeight = _borderHeight; CommandManage.GetInstance.AreaManage = areaManage; } private void Form1_Load(object sender, EventArgs e) { if (areaManage == null) { MessageBox.Show("区域管理器不能为空"); return; } this.deleteMenuItem.Enabled = true; //需要放在最前面,他会清理画板 ControlDatabind(false); //画板加载背景图片 loadBackImage(); AutoSizeF(); if (pageStatus == PageStatus.Create) { bb = new BorderPackObj(zedGraphControl1, poManager); ; if (bb != null) { ((BorderPackObj)bb).SetWidth = borderWidth; ((BorderPackObj)bb).SetHeight = borderHeight; poManager.ListPob.Add(bb); InsertPackObjTree(bb); bb.Changed += new PackObjBase.ChangedEventHandler(Bpo_Changed); } try { pDoc = new PrintDocument(); pDoc.DefaultPageSettings.Landscape = true; pDoc.OriginAtMargins = true; pDoc.DefaultPageSettings.PrinterResolution.Kind = PrinterResolutionKind.High; pDoc.DefaultPageSettings.Margins = new Margins(8, 8, 4, 4); pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage); } catch (Exception ) { } } if (pageStatus == PageStatus.Edit) { foreach (PackObjBase pob in poManager.ListPob) { if (pob is AbleEditPackObj) { AbleEditPackObj a = pob as AbleEditPackObj; a.IsViewBoard = EIsBool.True; } } ReLoad(); } //areaManage.PackManage.ListPob.FindAll(s => s.PackTag.EndsWith("26".Replace('.', '_')))[0].Draw(); } //画板加载背景图片 private void loadBackImage() { if (isViewBackImg) { //加载北京图片 Image img = null; try { img = Image.FromFile(@"Resources/template/" + areaManage.Name + ".jpg"); } catch (Exception ) { } if (img != null) { zedGraphControl1.BackgroundImage = img; zedGraphControl1.GraphPane.Fill.Color = Color.Transparent; zedGraphControl1.MasterPane.Fill.IsVisible = false; zedGraphControl1.GraphPane.Chart.Fill.IsVisible = false; } } else { zedGraphControl1.BackgroundImage = null; } } private void AutoSizeF() { #region 设置界面自适应 //在此处可随时设置板子的属性,横向的 //if (borderWidth > borderHeight) //{ // borderHeight = zedGraphControl1.Parent.Height - 54; // borderWidth = Convert.ToInt32(borderHeight * 1.414) + 2; //} //else //{ // borderWidth = zedGraphControl1.Parent.Width - 54; // borderHeight = Convert.ToInt32(borderWidth * 1.414) + 2; //} zedGraphControl1.Width = borderWidth; zedGraphControl1.Height = borderHeight; PackObjBase pack = poManager.ListPob.FirstOrDefault(s => s is BorderPackObj); if(pack != null) { ((BorderPackObj)pack).SetWidth = borderWidth; ((BorderPackObj)pack).SetHeight = borderHeight; } areaManage.setPrint(false); zedGraphControl1.Refresh(); #endregion } /// /// 修改指定树结点的包控件内容 /// private void ModPackObjTree(TreeNodeCollection tnc, PackObjBase pob) { if (selectPoB == null) return; foreach (TreeNode tn in tnc) { try { if (tn.Name == pob.PackName) { tn.Name = pob.PackName; tn.Tag = pob; tn.Text = pob.Descript; break; } else if (tn.Nodes.Count > 0) { ModPackObjTree(tn.Nodes, pob); } } catch (Exception ) { } } } /// /// 插入指定树结点的包控件内容 /// /// private void InsertPackObjTree(PackObjBase pob, bool isSelMySelft = true) { TreeNode tnSub = new TreeNode(); pob.IsSelect = false; tnSub.Name = pob.PackName; tnSub.Tag = pob; tnSub.Text = pob.Descript; if (treeView1.SelectedNode == null) { //如果是白板对象直接加在顶层 if (pob is BorderPackObj) { treeView1.Nodes.Add(tnSub); pob.SetParent = null; } else { treeView1.SelectedNode = treeView1.Nodes[0]; treeView1.SelectedNode.Nodes.Add(tnSub); PackObjBase ppob = (PackObjBase)treeView1.SelectedNode.Tag; if (ppob != null) pob.SetParent = ppob; } } else { treeView1.SelectedNode.Nodes.Add(tnSub); PackObjBase ppob = (PackObjBase)treeView1.SelectedNode.Tag; if (ppob != null) pob.SetParent = ppob; } //只有在多层级时才会把当前处理的结点做为选中结点,这下会生成多层级结点 if (isSelMySelft) { treeView1.SelectedNode = tnSub; } else { treeView1.SelectedNode = tnSub.Parent; selectNode = tnSub.Parent; } TreeNodeMouseClickEventArgs e = new TreeNodeMouseClickEventArgs(tnSub, 0, 0, 0, 0); DrawPackObject(pob); if (isSelMySelft) { selectPoB = pob; } else { selectPoB = pob.SetParent; } //treeView1_NodeMouseClick(null, e); } DrawGraphManagement.MyUserControl.UCBase uc = null; private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { TreeNode tn = e.Node; selectNode = tn; PackObjBase pob = (PackObjBase)tn.Tag; DrawPackObject(pob); } private void DrawPackObject(PackObjBase pob) { if (pob != null) { if (selectPoB != null && !pob.Equals(selectPoB)) { selectPoB.IsSelect = false; selectPoB.Draw(); } if (selectPoB == null || !pob.Equals(selectPoB)) { pob.IsSelect = true; selectPoB = pob; } //得先画才能显示属性 pob.Draw(); //设置属性 SetPropertyPanle(pob); } } /// /// 设置属性面板的显示 /// /// private void SetPropertyPanle(PackObjBase pob) { Type type = pob.GetType(); PropertyInfo[] infos = type.GetProperties(); toolTip1.RemoveAll(); panel3.Controls.Clear(); Panel panel = null; Panel sumPanel = new Panel(); sumPanel.AutoSize = true; sumPanel.Dock = DockStyle.Top; foreach (PropertyInfo info in infos) { Attribute[] attribs = Attribute.GetCustomAttributes(info); Attribute attrib = attribs.FirstOrDefault(s => s is NoCreatControlAttributs); //如果增加了NoCreatControlAttributs这个属性的属性则不生成控件 if (attrib != null) continue; if (info.PropertyType == typeof(String) || info.PropertyType == typeof(uint) || info.PropertyType == typeof(int) || info.PropertyType == typeof(DateTime) || info.PropertyType == typeof(float) || info.PropertyType == typeof(double) || info.PropertyType == typeof(bool)) { uc = new DrawGraphManagement.MyUserControl.UCAttrib(selectPoB); uc.SetToolTip = toolTip1; panel = uc.GreatPropertyPanel(info); } else if (info.PropertyType == typeof(Color)) { uc = new DrawGraphManagement.MyUserControl.UCColor(selectPoB); uc.SetToolTip = toolTip1; uc.colorDialog1 = colorDialog1; panel = uc.GreatPropertyPanel(info); } else if (info.PropertyType.IsEnum) { uc = new DrawGraphManagement.MyUserControl.UCSelect(selectPoB); uc.datasource = System.Enum.GetNames(info.PropertyType); uc.SetToolTip = toolTip1; panel = uc.GreatPropertyPanel(info); } if (panel != null) { sumPanel.Controls.Add(panel); ModPackObjTree(treeView1.Nodes, selectPoB); } uc.ChangeValue += new UCBase.ChangeValueEventHandler(UC_ChangeValue); } this.panel3.Controls.Add(sumPanel); } public void UC_ChangeValue(PackObjBase sender, EventArgs e) { uc.ChangeValue -= new UCBase.ChangeValueEventHandler(UC_ChangeValue); if (sender == null) return; } public void labColor_Click(object sender, EventArgs e) { if (selectPoB == null) return; System.Windows.Forms.Label lab = (sender as System.Windows.Forms.Label); try { Color col = ((BoxPackObj)selectPoB).FillColor; if (colorDialog1.ShowDialog() == DialogResult.OK) { col = colorDialog1.Color; ((BoxPackObj)selectPoB).FillColor = col; lab.BackColor = col; } } catch (Exception) { } finally { ModPackObjTree(treeView1.Nodes, selectPoB); if (selectPoB != null) { selectPoB.Draw(); } } } float moveSpanX = 0; float moveSpanY = 0; MovePackObjCommand moveCmd = null; private bool zedGraphControl1_MouseDownEvent(ZedGraphControl sender, MouseEventArgs e) { moveSpanX = (float)(Convert.ToDouble(e.X) / Convert.ToDouble(zedGraphControl1.Width)); moveSpanY = (float)(Convert.ToDouble(e.Y) / Convert.ToDouble(zedGraphControl1.Height)); float x = (float)(Convert.ToDouble(e.X) / Convert.ToDouble(zedGraphControl1.Width)); float y = (float)(Convert.ToDouble(e.Y) / Convert.ToDouble(zedGraphControl1.Height)); if (e.Button == MouseButtons.Left) { CommandManage.GetInstance.MouseLeftDown = true; if (CommandManage.GetInstance.CtrlDown) { if (selectPoB != null) { moveCmd = new MovePackObjCommand(areaManage, selectPoB); moveCmd.PreExecute(); } } } if (e.Button == MouseButtons.Right) { zedGraphControl1.ContextMenuStrip.Items.Clear(); List packs = areaManage.PackManage.ListPob.FindAll(s => s is TextPackObj); bool isHaveSelect = false; PackObjBase selPobT = null; foreach (PackObjBase pack in packs) { if (pack.InScope((float)x, (float)y)) { ToolStripItem mi = new ToolStripMenuItem(); int lent = 6; if (pack.PackText.Length <= lent) lent = pack.PackText.Length; mi.Text = pack.PackText.Substring(0, lent); mi.Click -= new EventHandler(contextMenuStrip3_ItemClick); mi.Click += new EventHandler(contextMenuStrip3_ItemClick); mi.Tag = pack; zedGraphControl1.ContextMenuStrip.Items.Add(mi); selPobT = pack; isHaveSelect = true; } } if (!isHaveSelect) { PackObjBase pack = areaManage.PackManage.ListPob.FirstOrDefault(s => s is BorderPackObj); if (pack != null) { ToolStripItem mi = new ToolStripMenuItem(); //int lent = 6; mi.Text = "白板对象"; mi.Click -= new EventHandler(contextMenuStrip3_ItemClick); mi.Click += new EventHandler(contextMenuStrip3_ItemClick); mi.Tag = pack; zedGraphControl1.ContextMenuStrip.Items.Add(mi); } } } return default(bool); } private void contextMenuStrip3_ItemClick(object sender, EventArgs e) { ToolStripItem item = (ToolStripItem)sender; PackObjBase pack = item.Tag as PackObjBase; if (pack != null) { DrawPackObject(pack); ClearSelectColor(treeView1.Nodes); //右键选中后右侧树结点标红 TreeColorRed(treeView1.Nodes, pack.Descript ,false); treePropertyList.ExpandAll(); } } private bool zedGraphControl1_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (CommandManage.GetInstance.CtrlDown && CommandManage.GetInstance.MouseLeftDown) { if (selectPoB != null && moveCmd != null) { float pointTX = (float)(Convert.ToDouble(e.X) / Convert.ToDouble(zedGraphControl1.Width)); float pointTY = (float)(Convert.ToDouble(e.Y) / Convert.ToDouble(zedGraphControl1.Height)); moveSpanX = pointTX - moveSpanX - poManager.X; moveSpanY = pointTY - moveSpanY - poManager.Y; moveCmd.Execute(moveSpanX, moveSpanY); moveSpanX = selectPoB.X; moveSpanY = selectPoB.Y; } } } return default(bool); } private bool zedGraphControl1_MouseUpEvent(ZedGraphControl sender, MouseEventArgs e) { double x = Convert.ToDouble(Convert.ToDouble(e.X) / Convert.ToDouble(zedGraphControl1.Width)); double y = Convert.ToDouble(Convert.ToDouble(e.Y) / Convert.ToDouble(zedGraphControl1.Height)); int scrollX = 0; int scrollY = 0; scrollX = panelzgc.HorizontalScroll.Value; scrollY = panelzgc.VerticalScroll.Value; txtXAisx.Text = x.ToString();// + "--" + scrollX.ToString(); txtYAisx.Text = y.ToString(); //"--" + scrollY.ToString(); if (e.Button == MouseButtons.Left) { if (CommandManage.GetInstance.CtrlDown && CommandManage.GetInstance.MouseLeftDown) { CommandManage.GetInstance.MouseLeftDown = false; if (moveCmd != null) { moveCmd.LastExecute(); CommandManage.GetInstance.AddCommand(moveCmd); if (selectPoB != null) { string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } } } } return default(bool); } /// /// 设置属性面板中特定的值 /// /// private void SetSpecificPropertyValues(string _propertyName) { string[] pros = _propertyName.Split(','); foreach (string propertyName in pros) { Control[] conls = panel3.Controls.Find("textBox" + propertyName, true); if (conls.Length > 0) { Type Ts = selectPoB.GetType(); object o = Ts.GetProperty(propertyName).GetValue(selectPoB, null); string Value = Convert.ToString(o); conls[0].Text = Value; } } } /// /// 画直线 /// /// /// private void PackObjBtn_Click(object sender, EventArgs e) { Button btn = (Button)sender; if (btn != null && btn.Tag != null) { PackObjBase bpo = BoardUtil.PackObjFactory(btn.Tag.ToString(), zedGraphControl1, poManager); if (bpo != null) { poManager.ListPob.Add(bpo); InsertPackObjTree(bpo); } } } /// /// 按顺序画组件 /// /// /// private void button1_Click(object sender, EventArgs e) { poManager.DrawPackObj(); } /// /// 保存文件 /// /// /// private void button2_Click(object sender, EventArgs e) { bool reVal = false; reVal = areaManage.Save(); if (reVal) { MessageBox.Show(poManager.MsgStr); } else { MessageBox.Show(poManager.MsgStr); } } /// /// 打开模板 /// /// /// private void button3_Click(object sender, EventArgs e) { //poManager = new PackObjManager(zedGraphControl1); //poManager.AllClear(); //selectPoB = null; //if (uc is DrawGraphManagement.MyUserControl.UCAttrib) // (uc as DrawGraphManagement.MyUserControl.UCAttrib).Clear(); //OpenFileDialog ofd = new OpenFileDialog(); //ofd.Filter = "(*.pom)|*.pom|(*.khd)|*.KHD|(*.*)|*.*"; //ofd.RestoreDirectory = true; //if (ofd.ShowDialog() == DialogResult.OK) //{ // try // { // asFileName = ofd.FileName; // //管理器加载 // poManager.LoadContent(ofd.FileName); // treeView1.Nodes.Clear(); // InsertPackObjToTree(poManager.ListPob); // } // catch (Exception exp) // { // MessageBox.Show(exp.Message); // } // ControlDatabind(); //} } private void ControlDatabind(bool isDataSource = true) { txtManagerX.DataBindings.Clear(); txtManagerX.DataBindings.Add("text", poManager, "X"); txtManagerY.DataBindings.Clear(); txtManagerY.DataBindings.Add("text", poManager, "Y"); txtManageName.DataBindings.Clear(); txtManageName.DataBindings.Add("text", areaManage, "Name"); txtClassName.DataBindings.Clear(); txtClassName.DataBindings.Add("text", areaManage, "ClassName"); if (areaManage.DllName == "") areaManage.DllName = "DrawGraph.dll"; txtDllName.DataBindings.Clear(); txtDllName.DataBindings.Add("text", areaManage, "DllName"); if (areaManage.NameSpace == "") areaManage.NameSpace = "DrawGraph."; txtNameSpace.DataBindings.Clear(); txtNameSpace.DataBindings.Add("text", areaManage, "NameSpace"); if (areaManage.InstanceName == "") areaManage.InstanceName = "OperationRecord"; txtInstanceName.DataBindings.Clear(); txtInstanceName.DataBindings.Add("text", areaManage, "InstanceName"); BoardUtil.ZedControlClear(zedGraphControl1); if (isDataSource) //绑定treePropertyList控件,手术类属性列表 BindPropertyList(areaManage.OpeRecord); else BindEntityList(); } private void BindEntityList() { List Entitys = new List(); Assembly _Assembyle = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "DrawGraph.dll");//你的loadfile Type[] _TypeList = _Assembyle.GetTypes(); for (int i = 0; i != _TypeList.Length; i++) { if (_TypeList[i].Namespace == "DrawGraphManagementArea.DocumentEntity") { Entitys.Add(_TypeList[i].Name); } } txtInstanceName.DataSource = Entitys; } /// /// 绑定treePropertyList控件,手术类属性列表 /// private void BindPropertyList(Object classObj, string objName = "OperationRecord") { treePropertyList.Nodes.Clear(); PropertyObject proObj = new PropertyObject(); proObj.Key = objName; proObj.Description = "类名"; List propertyList = BoardFormUtil.GetPropertyList(classObj); proObj.SubPropertyList = propertyList; TreeNode tnSub = new TreeNode(); tnSub.Name = proObj.ViewTreeNode; tnSub.Text = proObj.ViewTreeNode; tnSub.Tag = proObj; treePropertyList.Nodes.Add(tnSub); BindPropertyListSubNode(propertyList, tnSub.Nodes); } /// /// 绑定treePropertyList控件的子结点 /// /// /// private void BindPropertyListSubNode(List propertyList, TreeNodeCollection nodes) { foreach (PropertyObject propert in propertyList) { TreeNode tnSub = new TreeNode(); tnSub.Name = propert.ViewTreeNode; tnSub.Text = propert.ViewTreeNode; tnSub.Tag = propert; if (propert.SubPropertyList.Count > 0) { BindPropertyListSubNode(propert.SubPropertyList, tnSub.Nodes); } nodes.Add(tnSub); } } private void InsertPackObjToTree(List pobs) { List subPobs = pobs.FindAll((c) => { return c.ParentName == ""; }); foreach (PackObjBase pob in subPobs) { //先插入父节点为空的内容到根节点 InsertListPobObjToTree(pob); //插入此结点下的所有子节点 InsertSubPackObjToTree(pobs, pob); } } private void InsertSubPackObjToTree(List pobs, PackObjBase parentPob) { List subPobs = pobs.FindAll((c) => { return c.ParentName == parentPob.PackName; }); if (subPobs.Count > 0) { foreach (PackObjBase pob in subPobs) { pob.SetParent = parentPob; InsertListPobObjToTree(pob); //回调查找自己下面是否有子对象 InsertSubPackObjToTree(pobs, pob); } } } private void InsertListPobObjToTree(PackObjBase pob) { pob.Changed += new PackObjBase.ChangedEventHandler(Bpo_Changed); TreeNode tnSub = new TreeNode(); pob.IsSelect = false; tnSub.Name = pob.PackName; tnSub.Tag = pob; tnSub.Text = pob.Descript; if (pob.SetParent == null) { treeView1.Nodes.Add(tnSub); } else { TreeNode[] tns = treeView1.Nodes.Find(pob.SetParent.PackName, true); if (tns.Length > 0) { tns[0].Nodes.Add(tnSub); } } pob.Draw(); } private void MenuItem_Click(object sender, EventArgs e) { ToolStripMenuItem btn = (ToolStripMenuItem)sender; if (btn != null && btn.Tag != null) { string tag = btn.Tag.ToString(); switch (tag) { case "ChartPackObj": this.CreateTreeItem(tag); this.CreateTreeItem(x1轴ToolStripMenuItem.Tag.ToString()); this.CreateTreeItem(x2轴ToolStripMenuItem.Tag.ToString(), true); this.CreateTreeItem(y1轴ToolStripMenuItem.Tag.ToString(), true); this.CreateTreeItem(y2轴ToolStripMenuItem.Tag.ToString(), true); break; default: this.CreateTreeItem(tag); break; } } } /// /// 可建立绑定数据源的结点 /// /// /// /// /// private void CreateTreeItem(string tag, string dataSourceName = "", string tagDesc = "", string viewText = "", bool isSelMySelf = true) { PackObjBase bpo = BoardUtil.PackObjFactory(tag, zedGraphControl1, poManager); //#region 增加初始默认值 if (bpo is LinePackObj || bpo is BoxPackObj || bpo is DottedLinePackObj || bpo is DottedLinesPackObj || bpo is LinesPackObj || bpo is RectangleFramePackObj) { bpo.EndX = 0.1f; bpo.EndY = 0.1f; } if (bpo is AbleEditPackObj) { AbleEditPackObj a = bpo as AbleEditPackObj; a.IsViewBoard = EIsBool.True; } //#endregion if (bpo != null) { if (dataSourceName != "") { bpo.DataSourceName = dataSourceName; bpo.CreatePackTag(); } if (tagDesc != "") { bpo.Descript = tagDesc; } if (viewText != "") { bpo.PackText = viewText; } if (bpo is TextPackObj) { TextPackObj tpb = (bpo as TextPackObj); float d = 0; if (float.TryParse(txtFontSize.Text,out d)) { tpb.FontSize = d; } } bool reVal = poManager.ListPobsAdd(bpo); if (reVal) { InsertPackObjTree(bpo, isSelMySelf); bpo.Changed += new PackObjBase.ChangedEventHandler(Bpo_Changed); } else { MessageBox.Show("创建组件不能重复"); } } } /// /// 建立普通非绑定数据源的结点 /// /// /// private void CreateTreeItem(string tag, bool hasBrother) { PackObjBase bpo = BoardUtil.PackObjFactory(tag, zedGraphControl1, poManager); if (bpo != null) { if (hasBrother) treeView1.SelectedNode = treeView1.SelectedNode.Parent; poManager.ListPob.Add(bpo); InsertPackObjTree(bpo); bpo.Changed += new PackObjBase.ChangedEventHandler(Bpo_Changed); } } private void Bpo_Changed(PackObjBase pob) { ModPackObjTree(treeView1.Nodes, pob); } private void Form1_KeyUp(object sender, KeyEventArgs e) { if ((e.Control) && e.KeyCode == Keys.S) { SaveFileForKey(); } if ((e.Control) && e.KeyCode == Keys.Z) { bool val = CommandManage.GetInstance.CtrlZCommand(); if (val) { ReLoad(); } } if ((e.Control) && e.KeyCode == Keys.Y) { bool val = CommandManage.GetInstance.CtrlYCommand(); if (val) { ReLoad(); } }else if (e.Control && e.KeyCode == Keys.Left) { TreeNode tn = treeView1.SelectedNode; if (tn != null) { PackObjBase pob = (PackObjBase)tn.Tag; if (pob != null) { float moveSpanX = float.Parse(txtMoveValue.Text.Trim()); float moveSpanY = 0f; MovePackObjCommand cmd = new MovePackObjCommand(areaManage, pob); cmd.Execute(-moveSpanX, moveSpanY); string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } } } else if (e.Control && e.KeyCode == Keys.Right) { TreeNode tn = treeView1.SelectedNode; if (tn != null) { PackObjBase pob = (PackObjBase)tn.Tag; if (pob != null) { float moveSpanX = float.Parse(txtMoveValue.Text.Trim()); float moveSpanY = 0f; MovePackObjCommand cmd = new MovePackObjCommand(areaManage, pob); cmd.Execute(moveSpanX, moveSpanY); string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } } } else if (e.Control && e.KeyCode == Keys.Up) { TreeNode tn = treeView1.SelectedNode; if (tn != null) { PackObjBase pob = (PackObjBase)tn.Tag; if (pob != null) { float moveSpanY = float.Parse(txtMoveValue.Text.Trim()); float moveSpanX = 0f; MovePackObjCommand cmd = new MovePackObjCommand(areaManage, pob); cmd.Execute(moveSpanX, -moveSpanY); string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } } } else if (e.Control && e.KeyCode == Keys.Down) { TreeNode tn = treeView1.SelectedNode; if (tn != null) { PackObjBase pob = (PackObjBase)tn.Tag; if (pob != null) { float moveSpanY = float.Parse(txtMoveValue.Text.Trim()); float moveSpanX = 0f; MovePackObjCommand cmd = new MovePackObjCommand(areaManage, pob); cmd.Execute(moveSpanX, moveSpanY); string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } } } CommandManage.GetInstance.CtrlDown = false; } private void ReLoad() { selectPoB = null; zedGraphControl1.MasterPane.GraphObjList.Clear(); treeView1.Nodes.Clear(); panel3.Controls.Clear(); poManager.SetZedControl(zedGraphControl1); InsertPackObjToTree(poManager.ListPob); treeView1.ExpandAll(); zedGraphControl1.Refresh(); } private void zedGraphControl1_KeyDown(object sender, KeyEventArgs e) { if (e.Control) { CommandManage.GetInstance.CtrlDown = true; } } /// /// 使用Ctrl + S组合键保存 /// private void SaveFileForKey() { poManager.SaveFile("", areaManage.Id); } private void 打印ToolStripMenuItem_Click(object sender, EventArgs e) { pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage); System.Windows.Forms.PrintDialog pDlg = new System.Windows.Forms.PrintDialog(); pDlg.Document = pDoc; if (pDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { pDoc.Print(); } } private void pDoc_PrintPage(object sender, PrintPageEventArgs e) { try { pDoc.PrintPage -= new PrintPageEventHandler(pDoc_PrintPage); Image img = zedGraphControl1.GetImage(); //e.Graphics.DrawImage(img,20f,0f,800f,1160f); e.Graphics.DrawImage(img, 20f, 0f); } catch (Exception ex) { Console.Write(ex.ToString()); } } private void treeView1_MouseDown(object sender, MouseEventArgs e) { if (tabControl1.SelectedIndex == 0) { if (e.Button == MouseButtons.Right) { Point ClickPoint = new Point(e.X, e.Y); TreeNode current = treeView1.GetNodeAt(ClickPoint); if (current != null)//判断你点的是不是一个节点 { treeView1.SelectedNode = current;//选中这个节点 } } } } /// /// 临时节点集合:用于临时存储剪切或者复制下的节点信息 /// PackObjTree packObjTree = new PackObjTree(); /// /// 树结构的操作方式:剪切或者拷贝 /// bool isCopy = false; private void cutMenuItem_Click(object sender, EventArgs e) { CutForKey(); } /// /// 剪切节点操作 /// private void CutForKey() { TreeNode node = treeView1.SelectedNode; packObjTree = InitPackObjTree(node); RemoveNode(node); //this.pasteMenuItem.Enabled = true; isCopy = false; } private void copyMenuItem_Click(object sender, EventArgs e) { CopyForKey(); } /// /// 复制操作 /// private void CopyForKey() { TreeNode node = treeView1.SelectedNode; packObjTree = InitPackObjTree(node); //this.pasteMenuItem.Enabled = true; isCopy = true; } private void pasteMenuItem_Click(object sender, EventArgs e) { PasteForKey(); } /// /// 粘贴操作 /// private void PasteForKey() { //this.pasteMenuItem.Enabled = isCopy; if (isCopy) { PackObjBase pob = packObjTree.Current.CloneParse(); if (pob != null) { poManager.ListPob.Add(pob); InsertPackObjTree(pob); pob.Changed += new PackObjBase.ChangedEventHandler(Bpo_Changed); } } if (!isCopy) packObjTree = null; } private void deleteMenuItem_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("是否要确认删除?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { TreeNode node = treeView1.SelectedNode; RemoveNode(node); } } /// /// 构造临时节点树 /// /// 需要添加的节点 private PackObjTree InitPackObjTree(TreeNode node) { PackObjTree pobTree = new PackObjTree(); if (node != null) { PackObjBase pob = (PackObjBase)node.Tag; pobTree.Current = pob; pobTree.ParentPob = pob.SetParent; if (node.Nodes != null && node.Nodes.Count > 0) { foreach (TreeNode tempNode in node.Nodes) { pobTree.SonPobs.Add(InitPackObjTree(tempNode)); } } } return pobTree; } /// /// 移除指定节点及子节点 /// /// 需要移除的节点 private void RemoveNode(TreeNode node) { if (node != null) { PackObjBase pob = (PackObjBase)node.Tag; if (pob != null) { DelPackObj(node, pob); } List nodeCol = new List(); foreach (TreeNode tempNode in node.Nodes) { nodeCol.Add(tempNode); } if (node.Nodes != null && node.Nodes.Count > 0) { foreach (TreeNode tempNode in nodeCol) { RemoveNode(tempNode); } } } } private void treeView1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { TreeNode tn = treeView1.SelectedNode; if (tn != null) { PackObjBase pob = (PackObjBase)tn.Tag; if (pob != null) { DialogResult dr = MessageBox.Show("是否要确认删除?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { RemoveNode(tn); } } } } else if ((e.Control) && e.KeyCode == Keys.S) { //SaveFileForKey(); } else if ((e.Control) && e.KeyCode == Keys.C) { //CopyForKey(); } else if ((e.Control) && e.KeyCode == Keys.X) { //CutForKey(); } else if ((e.Control) && e.KeyCode == Keys.V) { //if (packObjTree != null) // PasteForKey(); } } private void DelPackObj(TreeNode tn, PackObjBase pob) { MovePackObjCommand cmd = new MovePackObjCommand(CommandManage.GetInstance.AreaManage, pob); cmd.PreExecute(); bool reBool = poManager.RemovePob(pob); if (reBool) { //如果执行成功保存命令 cmd.LastExecute(); CommandManage.GetInstance.AddCommand(cmd); //执行其他操作; pob.Clear(); selectPoB = null; zedGraphControl1.Refresh(); panel3.Controls.Clear(); if (tn != null) { TreeNodeCollection tns = tn.Nodes; TreeNode tnParent = tn.Parent; treeView1.Nodes.Remove(tn); if (tns.Count > 0) { foreach (TreeNode tnTemp in tns) { tnParent.Nodes.Add(tnTemp); } } } } } private void toolStripMenuItem1_Click(object sender, EventArgs e) { TreeNode selNode = treePropertyList.SelectedNode; if (selNode != null) { PropertyObject property = (PropertyObject)selNode.Tag; if (property != null) { ToolStripMenuItem item = sender as ToolStripMenuItem; if (item != null) { PackObjBase pack = areaManage.PackManage.ListPob.FirstOrDefault(s => s.DataSourceName == property.ViewDesignTag()); bool isAdd = true; if (pack != null) { DialogResult result = MessageBox.Show("要增加的数据绑定组件,已经存在,且结点是:"+ pack.Descript, "是否增加", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { isAdd = true; } else { isAdd = false; } } if (isAdd) { if (selectNode != null) { treeView1.SelectedNode = selectNode; } //自动增加一组带描述,下划线及文本对象的组件。 //设置成有层级关系的 //isAddNodeDown = true; this.CreateTreeItem("TextPackObj", "", property.Key + "文本", property.Key); this.CreateTreeItem(item.Tag.ToString(), property.ViewDesignTag(), property.Key,"", false); //完成后换成无层级模式。 //isAddNodeDown = false; } } else { MessageBox.Show("创建组件时TAG不能为空"); } } } } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { //if (tabControl1.SelectedIndex == 0) //{ // isAddNodeDown = true; //} //else //{ // isAddNodeDown = false; //} } private void button1_Click_1(object sender, EventArgs e) { string objName = txtInstanceName.Text.Trim(); Object obj = BoardFormUtil.GetObjectFactory(areaManage.DllName, areaManage.NameSpace, areaManage.InstanceName); BindPropertyList(obj, objName); } private void btnSearchInfo_Click(object sender, EventArgs e) { TreeColorRed(treePropertyList.Nodes, txtSearchInfo.Text.Trim()); treePropertyList.ExpandAll(); } private void btnSearchPack_Click(object sender, EventArgs e) { string searchInfo = textBox2.Text.Trim(); if (searchInfo == "") return; ClearSelectColor(treeView1.Nodes); List pobs = areaManage.PackManage.ListPob.FindAll(s => s.PackText.ToUpper().IndexOf(searchInfo.ToUpper()) >= 0); foreach (PackObjBase pob in pobs) { TreeColorRed(treeView1.Nodes, pob.Descript); } treeView1.ExpandAll(); } private void ClearSelectColor(TreeNodeCollection nodes) { foreach (TreeNode nodeInNode in nodes) { nodeInNode.BackColor = Color.White; if (nodeInNode.Nodes.Count > 0) { ClearSelectColor(nodeInNode.Nodes); } } } private void TreeColorRed(TreeNodeCollection nodes, string searchInfo, bool isVague = true) { foreach (TreeNode nodeInNode in nodes) { if (isVague) { if (nodeInNode.Text.Trim().ToUpper().IndexOf(searchInfo.ToUpper()) >= 0 && searchInfo != "") { nodeInNode.BackColor = Color.Red; selectNode = nodeInNode; treeView1.SelectedNode = selectNode; } } else { if (nodeInNode.Text.Trim().ToUpper() == searchInfo.ToUpper() && searchInfo != "") { nodeInNode.BackColor = Color.Red; selectNode = nodeInNode; treeView1.SelectedNode = selectNode; } } if (nodeInNode.Nodes.Count > 0) { TreeColorRed(nodeInNode.Nodes, searchInfo, isVague); } } } private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { PackObjBase pack = e.Node.Tag as PackObjBase; if (pack != null && selectPoB != null && e.Label != null) { selectPoB = null; pack.Descript = e.Label.Trim(); pack.PackText = e.Label.Trim().Replace("文本",""); DrawPackObject(pack); } } private void AreaManageForm_Resize(object sender, EventArgs e) { AutoSizeF(); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { isViewBackImg = checkBox1.Checked; loadBackImage(); } private void txtXAisx_DoubleClick(object sender, EventArgs e) { TextBox send = sender as TextBox; if (send != null) { Clipboard.SetDataObject(send.Text); } } private void AreaManageForm_FormClosing(object sender, FormClosingEventArgs e) { Clipboard.Clear(); CommandManage.GetInstance.Clear(); foreach (PackObjBase pob in poManager.ListPob) { if (pob is AbleEditPackObj) { AbleEditPackObj a = pob as AbleEditPackObj; a.IsViewBoard = EIsBool.False; } } } private void btnOk_Click(object sender, EventArgs e) { string fontSize = txtFontSize.Text; List ables = areaManage.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList(); foreach (PackObjBase pack in ables) { AbleEditPackObj ableEdit = pack as AbleEditPackObj; ableEdit.FontSize = int.Parse(fontSize); } List ablesT = areaManage.PackManage.ListPob.Where(s => s is TextPackObj).ToList(); foreach (PackObjBase pack in ablesT) { TextPackObj ableEdit = pack as TextPackObj; ableEdit.FontSize = int.Parse(fontSize); } areaManage.Draw(); } private void CmdToolStripMenuItem_Click(object sender, EventArgs e) { if (selectPoB == null) return; ToolStripMenuItem item = sender as ToolStripMenuItem; switch (item.Tag.ToString()) { case "HCenterCmd": CommandManage.GetInstance.HCenterCmd(selectPoB); break; case "VCenterCmd": CommandManage.GetInstance.VCenterCmd(selectPoB); break; case "TopAlignCmd": CommandManage.GetInstance.TopAlignCmd(selectPoB); break; case "LeftAlignCmd": CommandManage.GetInstance.LeftAlignCmd(selectPoB); break; case "alignCmdOfPack": alignCmdOfPackPnl.Visible = true; cmbPackList.Items.Clear(); foreach (PackObjBase pack in areaManage.PackManage.ListPob) { cmbPackList.Items.Add(pack.Descript); } cmbPackList.AutoCompleteMode = AutoCompleteMode.SuggestAppend;//设置自动完成的模式 cmbPackList.AutoCompleteSource = AutoCompleteSource.ListItems;//设置自动完成字符串的源 break; } string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } private void button3_Click_1(object sender, EventArgs e) { alignCmdOfPackPnl.Visible = false; } private void btnAlignCmd_Click(object sender, EventArgs e) { if (selectPoB == null) { MessageBox.Show("要先选中组件"); return; } if (cmbPackList.Text.Trim() == "" && cmbPackAlignType.Text.Trim() == "") { MessageBox.Show("对齐参数不能为空"); return; } PackObjBase JZPack = areaManage.PackManage.ListPob.FirstOrDefault(s => s.Descript == cmbPackList.Text); if (JZPack != null) { if (cmbPackAlignType.Text.Trim() == "等宽") { CommandManage.GetInstance.SameWidthCmd(selectPoB, JZPack); } else if (cmbPackAlignType.Text.Trim() == "等高") { CommandManage.GetInstance.SameHeightCmd(selectPoB, JZPack); } else if (cmbPackAlignType.Text.Trim() == "右") { CommandManage.GetInstance.SameRightCmd(selectPoB, JZPack); } else { CommandManage.GetInstance.AlignCmdOfPack(selectPoB, JZPack, cmbPackAlignType.Text.Trim()); } string propertyName = "X,Y,EndX,EndY"; SetSpecificPropertyValues(propertyName); } } private void cmbPackList_TextChanged(object sender, EventArgs e) { } private void 配置值转换ToolStripMenuItem_Click(object sender, EventArgs e) { if (selectPoB == null) { MessageBox.Show("要先选中组件"); return; } if (selectPoB.ConvertMode == EConvertMode.NoConvert) { MessageBox.Show("选中对象的ConverMode不能是NoConvert"); return; } ConvertModeForm form = new ConvertModeForm(selectPoB, null); form.ShowDialog(); } private void 生成可编辑区域不带前标签ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode selNode = treePropertyList.SelectedNode; if (selNode != null) { PropertyObject property = (PropertyObject)selNode.Tag; if (property != null) { ToolStripMenuItem item = sender as ToolStripMenuItem; if (item != null) { PackObjBase pack = areaManage.PackManage.ListPob.FirstOrDefault(s => s.DataSourceName == property.ViewDesignTag()); bool isAdd = true; if (pack != null) { DialogResult result = MessageBox.Show("要增加的数据绑定组件,已经存在,且结点是:" + pack.Descript, "是否增加", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { isAdd = true; } else { isAdd = false; } } if (isAdd) { if (selectNode != null) { treeView1.SelectedNode = selectNode; } //自动增加一组带描述,下划线及文本对象的组件。 //完成后换成无层级模式。 //isAddNodeDown = false; this.CreateTreeItem(item.Tag.ToString(), property.ViewDesignTag(), property.Key); } } else { MessageBox.Show("创建组件时TAG不能为空"); } } } } //鼠标移动窗体移动 private bool isMouseDown = false; private Point lableLocation; //lable的location private Point mouseOffset; //鼠标的按下位置 private void lable_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { isMouseDown = true; lableLocation = ((Panel)sender).Location; mouseOffset = Control.MousePosition; } } private void lable_MouseUp(object sender, MouseEventArgs e) { isMouseDown = false; } private void lable_MouseMove(object sender, MouseEventArgs e) { int _x = 0; int _y = 0; if (isMouseDown) { Point pt = Control.MousePosition; _x = mouseOffset.X - pt.X; _y = mouseOffset.Y - pt.Y; ((Panel)sender).Location = new Point(lableLocation.X - _x, lableLocation.Y - _y); } } private void contextMenuStrip2_VisibleChanged(object sender, EventArgs e) { contextMenuStrip2.Enabled = true; if (contextMenuStrip2.Visible) { //根结点 TreeNode rootNode = treePropertyList.Nodes[0]; TreeNode selNode = treePropertyList.SelectedNode; if (rootNode != null && selNode != null) { ////只有要根结点下的所有数据对象可以生成可编辑组件 //if (selNode.Parent == rootNode) //{ toolStripMenuItem1.Enabled = true; 生成可编辑区域ToolStripMenuItem.Enabled = true; 生成可编辑区域不带前标签ToolStripMenuItem.Enabled = true; //} //else //{ // toolStripMenuItem1.Enabled = true; // 生成可编辑区域ToolStripMenuItem.Enabled = false; // 生成可编辑区域不带前标签ToolStripMenuItem.Enabled = false; //} } if (selNode != null && selNode.Nodes.Count > 0) { contextMenuStrip2.Enabled = false; } } } } }