示例#1
0
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            flowLayoutPanel1.Controls.Clear();

            label1.Text = "系统设置";
            NavBtnItem btnItem = new NavBtnItem();

            btnItem.Text             = "通讯设置";
            btnItem.SelectedChanged += new NavBtnItem.SelectedHandler(btnItemSysteConfig_SelectedChanged);
            btnItem.Tag              = "LydTOPDP.FrmSysSetting";
            flowLayoutPanel1.Controls.Add(btnItem);

            FlowLayoutPanel flowPanel = new FlowLayoutPanel();

            flowPanel.Padding    = new Padding(10, 5, 5, 5);
            flowPanel.AutoScroll = true;
            flowPanel.Dock       = DockStyle.Fill;
            panel4.Controls.Clear();
            panel4.Controls.Add(flowPanel);
        }
示例#2
0
        protected void btnItem_SelectedChanged(object sender, EventArgs e)
        {
            #region 判断当前是否存在打开的插件
            if (currentBtn != null && currentBtn.Equals(sender))
            {
                return;
            }
            else
            {
            }

            if (currentPluginForm != null)
            {
                if (currentPluginForm.CloseForm() == DialogResult.Cancel)
                {
                    (sender as NavBtnItem).Selected = false;
                    return;
                }
            }
            #endregion
            currentBtn = sender as NavBtnItem;
            SetPrograss("就绪", " ", 0);
            foreach (NavBtnItem item in flowLayoutPanel1.Controls)
            {
                item.Selected = false;
            }
            (sender as NavBtnItem).Selected = true;
            PluginModel pp  = (sender as NavBtnItem).Tag as PluginModel;
            Assembly    ass = Assembly.LoadFrom(pp.LibPath);

            Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(pp.LibPath);

            string pluginClassName = ass.GetName().Name + "." + (sender as NavBtnItem).Tag2;
            string guid            = (sender as NavBtnItem).Tag2.ToString();
            //foreach (PluginModel pm in pp.Items)
            //{
            //    if (guid == pm.GUID)
            //    {
            //        pluginClassName = pm.Namesapce + "." + pm.Name;
            //        break;
            //    }
            //}

            Type tp = ass.GetType(pluginClassName);

            if (tp == null)
            {
                MessageBox.Show("插件加载失败:" + pluginClassName);
                return;
            }
            Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(pp.LibPath);
            Form pluginClass = Activator.CreateInstance(tp) as Form;
            if (pluginClass is PluginLib.BaseForm)
            {
                currentPluginForm = pluginClass as PluginLib.BaseForm;
            }
            else
            {
                currentPluginForm = null;
            }
            pluginClass.TopLevel        = false;
            pluginClass.Anchor          = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
            pluginClass.Dock            = DockStyle.Top;
            pluginClass.FormBorderStyle = FormBorderStyle.None;
            panel4.Controls.Clear();
            panel4.Controls.Add(pluginClass);
            pluginClass.Visible = true;

            //pluginClassName = pp.Namespace + ".Plugin";
            tp = ass.GetType(pluginClassName);
            tp = tp.BaseType;

            #region 为plugin.cs文件中的消息处理事件添加委托方法
            EventInfo eiMessage = tp.GetEvent("message");
            eiMessage.RemoveEventHandler(this, Delegate.CreateDelegate(eiMessage.EventHandlerType, this, "WriteMessage"));
            eiMessage.AddEventHandler(this, Delegate.CreateDelegate(eiMessage.EventHandlerType, this, "WriteMessage"));

            EventInfo eiClear = tp.GetEvent("clear");
            eiClear.RemoveEventHandler(this, Delegate.CreateDelegate(eiClear.EventHandlerType, this, "ClearMessage"));
            eiClear.AddEventHandler(this, Delegate.CreateDelegate(eiClear.EventHandlerType, this, "ClearMessage"));

            EventInfo eiPushData = tp.GetEvent("pushData");
            eiPushData.RemoveEventHandler(this, Delegate.CreateDelegate(eiPushData.EventHandlerType, this, "PushData"));
            eiPushData.AddEventHandler(this, Delegate.CreateDelegate(eiPushData.EventHandlerType, this, "PushData"));

            EventInfo eiPopupData = tp.GetEvent("popupData");
            eiPopupData.RemoveEventHandler(this, Delegate.CreateDelegate(eiPopupData.EventHandlerType, this, "PopupData"));
            eiPopupData.AddEventHandler(this, Delegate.CreateDelegate(eiPopupData.EventHandlerType, this, "PopupData"));

            EventInfo eiPrograss = tp.GetEvent("PrograssInfo");
            eiPrograss.RemoveEventHandler(this, Delegate.CreateDelegate(eiPrograss.EventHandlerType, this, "SetPrograss"));
            eiPrograss.AddEventHandler(this, Delegate.CreateDelegate(eiPrograss.EventHandlerType, this, "SetPrograss"));

            EventInfo eiPrograssMaxValue = tp.GetEvent("ProgressMaxValue");
            eiPrograssMaxValue.RemoveEventHandler(this, Delegate.CreateDelegate(eiPrograssMaxValue.EventHandlerType, this, "SetProgressMaxValue"));
            eiPrograssMaxValue.AddEventHandler(this, Delegate.CreateDelegate(eiPrograssMaxValue.EventHandlerType, this, "SetProgressMaxValue"));

            EventInfo resetProgressMaxValue = tp.GetEvent("resetProgressMaxValue");
            resetProgressMaxValue.RemoveEventHandler(this, Delegate.CreateDelegate(resetProgressMaxValue.EventHandlerType, this, "ResetProgressMaxValue"));
            resetProgressMaxValue.AddEventHandler(this, Delegate.CreateDelegate(resetProgressMaxValue.EventHandlerType, this, "ResetProgressMaxValue"));

            EventInfo eiLogOpt = tp.GetEvent("LogOperatorInfo");
            eiLogOpt.RemoveEventHandler(this, Delegate.CreateDelegate(eiLogOpt.EventHandlerType, this, "LogOperatorInfo"));
            eiLogOpt.AddEventHandler(this, Delegate.CreateDelegate(eiLogOpt.EventHandlerType, this, "LogOperatorInfo"));

            EventInfo eiLogSystem = tp.GetEvent("LogSystemInfo");
            eiLogSystem.RemoveEventHandler(this, Delegate.CreateDelegate(eiLogSystem.EventHandlerType, this, "LogSystemInfo"));
            eiLogSystem.AddEventHandler(this, Delegate.CreateDelegate(eiLogSystem.EventHandlerType, this, "LogSystemInfo"));
            #endregion

            #region  递通讯方式信息
            CommunicationData data = ConfigDataService.GetCommunicationData();

            Object pgClass = Activator.CreateInstance(tp);

            MethodInfo methodInfo = tp.GetMethod("SetSerialPort");
            methodInfo.Invoke(pgClass, new object[] { data.Serialport, data.Baudrate });

            methodInfo = tp.GetMethod("SetNetwork");
            methodInfo.Invoke(pgClass, new object[] { data.IP, data.Localport, data.Remoteport });

            #endregion
        }
示例#3
0
        private void navLeftMenu1_NavButtonItemClick(object sender, EventArgs e)
        {
            #region 判断当前是否存在打开的插件
            if (currentPluginForm != null)
            {
                if (currentPluginForm.CloseForm() == DialogResult.Cancel)
                {
                    return;
                }
                currentPluginForm = null;
            }
            #endregion
            flowLayoutPanel1.Controls.Clear();
            panel4.Controls.Clear();
            SetPrograss("就绪", " ", 0);

            FlowLayoutPanel flp = new FlowLayoutPanel();
            panel4.Controls.Add(flp);
            flp.Dock    = DockStyle.Fill;
            flp.Visible = true;

            label1.Text = (sender as Button).Text;
            label1.Tag  = (sender as Button).Tag;

            #region 查找插件
            PluginService       pgService = new PluginService();
            IList <PluginModel> items     = pgService.GetPluginItems(int.Parse(label1.Tag.ToString()));


            string      sortXml    = AppDomain.CurrentDomain.BaseDirectory + @"/ConfigData/pluginSort.xml";
            XmlDocument xmlDocSort = new XmlDocument();
            xmlDocSort.Load(sortXml);
            XmlNodeList funItemList = xmlDocSort.SelectNodes("sort/fun_" + int.Parse(label1.Tag.ToString()) + "/item");

            foreach (XmlNode el in funItemList)
            {
                //foreach (PluginPro item in items)
                //{
                //if (item.Items == null) continue;
                foreach (PluginModel pm in items)
                {
                    if (el.Attributes["guid"].Value == pm.GUID)
                    {
                        NavBtnItem btnItem = new NavBtnItem();
                        btnItem.Text             = pm.Text;
                        btnItem.SelectedChanged += new NavBtnItem.SelectedHandler(btnItem_SelectedChanged);
                        btnItem.Tag              = pm;
                        btnItem.Tag1             = pm.LibPath;
                        btnItem.Tag2             = pm.GUID;
                        flowLayoutPanel1.Controls.Add(btnItem);

                        PictureBox pic = new PictureBox();
                        pic.Tag    = btnItem;
                        pic.Cursor = Cursors.Arrow;
                        pic.Click += delegate(object sender1, EventArgs e1)
                        {
                            NavBtnItem btnItem1 = (NavBtnItem)(sender1 as PictureBox).Tag;
                            btnItem_SelectedChanged(btnItem1, e1);
                        };
                        pic.MouseMove += delegate(object sender1, MouseEventArgs e1)
                        {
                            pic.Image = global::LYDTOPDP.Properties.Resources.btn11;
                            CreateBtnImage(pic, btnItem.Text);
                        };
                        pic.MouseLeave += delegate(object sender1, EventArgs e1)
                        {
                            pic.Image = global::LYDTOPDP.Properties.Resources.btn;
                            CreateBtnImage(pic, btnItem.Text);
                        };
                        pic.Image = global::LYDTOPDP.Properties.Resources.btn;
                        flp.Controls.Add(pic);
                        CreateBtnImage(pic, btnItem.Text);
                    }
                }
                //}
            }



            #endregion
        }