Пример #1
0
        /// <summary>
        ///  调用运行窗体
        ///  <param name="menu">菜单对象</param>
        /// </summary>
        public void Execute(DataFunction df)
        {
            bool exists = false;

            //判断是否存在已经打开的窗口(0:弹窗 1:新开 不需要判断)
            if (df.OpenFlag > 1)
            {
                //  检查是否已打开窗口
                foreach (Form child in this.MdiChildren)
                {
                    if (child.ProductName == df.ModuleName && child.GetType().Name == df.ObjectName)
                    {
                        FrmBase tempChild = child as FrmBase;
                        if (tempChild != null)
                        {
                            //  3: 不判断参数 或 2:判断参数但参数值相同时激活窗口
                            if (df.OpenFlag == 3 || tempChild.ControlParameter == df.Parameter)
                            {
                                child.Focus();
                                exists = true;
                                break;
                            }
                        }
                    }
                }
            }

            if (!exists)
            {
                Execute(df.Title, df.ModuleName, df.ObjectName, df.Parameter, df.OpenFlag == 0);
            }

            return;
        }
Пример #2
0
        /// <summary>
        /// 点击菜单事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dynamic_bbi_ItemClick(object sender, ItemClickEventArgs e)
        {
            DataFunction df = e.Item.Tag as DataFunction;

            if (df != null)
            {
                this.Execute(df);
            }
        }
Пример #3
0
        /// <summary>
        ///  信息回调函数,实现接收信息后的相关处理。
        /// </summary>
        /// <param name="infoBody">信息内容</param>
        private void CallbackInfo(string infoCode, string infoBody)
        {
            switch (infoCode)
            {
            case LocalInfoHelper.OpenForm:      //  打开窗口
                DataFunction df = infoBody.DeserializeObject <DataFunction>();
                Execute(df);
                break;

            case LocalInfoHelper.AddNotice:     //  增加通知窗口
                if (!this.dictNotice.ContainsKey(infoBody))
                {
                    int    idx       = infoBody.IndexOf(";");
                    string module    = infoBody.Substring(0, idx);
                    int    idx1      = infoBody.IndexOf(";", idx + 1);
                    string form      = infoBody.Substring(idx + 1, idx1 - idx - 1);
                    string parameter = infoBody.Substring(idx1 + 1);

                    //  产生通知窗口
                    FrmNoticeBase frmAddNotice = this.CreateNotice(module, form, parameter);
                    this.dictNotice.Add(infoBody, frmAddNotice);

                    //  产生通知栏
                    this.CreateNoticeIco(frmAddNotice);
                }
                break;

            case LocalInfoHelper.DelNotice:     //  撤销通知窗口
                if (this.dictNotice.ContainsKey(infoBody))
                {
                    FrmNoticeBase frmDelNotice = this.dictNotice[infoBody];
                    frmDelNotice.Stop();

                    BarButtonItem bbi = (BarButtonItem)frmDelNotice.Tag;
                    if (bbi != null)
                    {
                        this.ribbon.Items.Remove((BarButtonItem)frmDelNotice.Tag);      //  已验证:this.ribbonStatusBar.ItemLinks下也同时移除
                        bbi = null;
                    }
                    frmDelNotice = null;
                    this.dictNotice.Remove(infoBody);
                }
                break;
            }
        }