// dynamic filling of menu private void cms_Opening(object sender, CancelEventArgs e) { Debug.Assert(list.Count != 0 && current != null); cms.Items.Clear(); ToolStripItem tssb = ((ToolStripDropDownMenu)sender).OwnerItem; bool isBackMenu = tssb.Equals(tssbBack); LinkedListNode <T> node = isBackMenu ? current.Next : current.Previous; while (node != null) { var tsmi = new ToolStripMenuItem(); tsmi.Tag = node; if (_GetMenuText != null) { tsmi.Text = _GetMenuText(node.Value); } else { tsmi.Text = node.Value.ToString(); } if (_GetMenuImage != null) { tsmi.Image = _GetMenuImage(node.Value); } cms.Items.Add(tsmi); node = isBackMenu ? node.Next : node.Previous; } }
private void ContextMenuStrip4_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { TreeNode CurSelectedNode = treeView1.SelectedNode; TreeNode ParentNode = CurSelectedNode.Parent; ToolStripItem Item1 = e.ClickedItem; var plc = pmg.FindPLCByName(ParentNode.Name); if (Item1.Equals(this.contextMenuStrip3.Items[0])) { plc.varlist.Remove(plc.FindvarItemByName(CurSelectedNode.Text)); CurSelectedNode.Remove(); } }
private void ContextMenuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { TreeNode CurSelectedNode = treeView1.SelectedNode; ToolStripItem Item1 = e.ClickedItem; if (Item1.Equals(this.contextMenuStrip2.Items[0])) { if (CurSelectedNode.Nodes.Count == 0) { treeView1.Nodes.Remove(CurSelectedNode); contextMenuStrip1.Items[CurSelectedNode.Name].Enabled = true; } else { MessageBox.Show("CurTreeNode is not Empty!"); } return; } else { Form2 AddPlcFormDlg = new Form2(); AddPlcFormDlg.ParentForm1 = this; if (AddPlcFormDlg.ShowDialog() == DialogResult.OK) { CurSelectedNode.Nodes.Clear(); var nodes = from plc in this.pmg.List select plc.Node; CurSelectedNode.Nodes.AddRange(nodes.ToArray()); treeView1.ExpandAll(); } else { MessageBox.Show("Cancel"); } AddPlcFormDlg.Close(); return; } }
private void ContextMenuStrip3_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { TreeNode CurSelectedNode = treeView1.SelectedNode; ToolStripItem Item1 = e.ClickedItem; var plc = pmg.FindPLCByName(CurSelectedNode.Name); if (Item1.Equals(this.contextMenuStrip3.Items[3])) { Form3 AddvarDlg = new Form3(this); if (AddvarDlg.ShowDialog() == DialogResult.OK) { MessageBox.Show("新增PLC变量成功"); } else { MessageBox.Show("取消增加PLC变量"); } AddvarDlg.Close(); } if (Item1.Equals(this.contextMenuStrip3.Items[1])) { try { plc.Open(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return; //throw; } if (plc.IsConnected) { plc.CycleTimer.Enabled = true; plc.Node.BackColor = Color.Blue; } else { MessageBox.Show(string.Format($"{0} is not connected yet", plc.name)); } return; } if (Item1.Equals(this.contextMenuStrip3.Items[2])) { if (plc.IsConnected) { plc.CycleTimer.Enabled = false; plc.Close(); plc.Node.BackColor = Color.Black; MessageBox.Show("PLC has been closed!"); } else { MessageBox.Show(string.Format($"{0} is not connected yet", plc.name)); } } if (Item1.Equals(this.contextMenuStrip3.Items[0])) { if (plc.IsConnected) { MessageBox.Show("请断开当前PLC!"); return; } else { CurSelectedNode.Nodes.Remove(plc.Node); Pmg.del(plc); MessageBox.Show(string.Format($"PLC{0}已被删除", plc.name)); plc = null; return; } } }