示例#1
0
        // 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;
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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;
                }
            }
        }