VS2008 WINFROM 利用WeifenLuo +OUTLOOKBAR +IrisSkin2.dll实现换肤 标签页面 以及子动态加载子菜单的实实例

来源:互联网 发布:网络的脆弱性 编辑:程序博客网 时间:2024/06/07 07:07

 下面是全部页面的代码程序

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows;
using System.Reflection;
using FYLC.MRMF.UserForm;
using FYLC.ClsMrmf;
using Microsoft.ApplicationBlocks.Data;
using System.Data.SqlClient;
using WeifenLuo.WinFormsUI.Docking;


namespace FYLC.MRMF
{
    public partial class FrmParent : Form
    {

        public DockPanel DockPanel
        {
            get { return this.dockPanel1; }
        
        }
        //定义委托
        public delegate void SendShop(ClsShop shop);
        public event SendShop sendshop;
        #region 设置窗体布局
            //定义初始窗体
            FrmLeft frmleft = new FrmLeft();
            FrmStar frmstart = new FrmStar();
            public  FrmUserList userlist = new FrmUserList();
          
            public DeserializeDockContent m_deserializeDockContent;
            
            /// <summary>
            /// 布局加载
            /// </summary>
            ///
            private void Get_UI()
            {
                m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);
                string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
                if (File.Exists(configFile))
                {
                    this.dockPanel1.LoadFromXml(configFile, m_deserializeDockContent);
                }
            
            }
            private IDockContent GetContentFromPersistString(string persistString)
            {
                if (persistString == typeof(FrmLeft).ToString())
                    return frmleft;
                else if (persistString == typeof(FrmStar).ToString())
                    return frmstart;
                //else if (persistString == typeof(FrmRoomView).ToString())
                //    return frmRoomView;
                else
                    return null;
            }
        #endregion
        
        public FrmParent()
        {
            InitializeComponent();

            this.skinEngine1.SkinFile = Application.StartupPath + @"\XPBlue.ssk";
                            
            Get_UI();//加载布局
            frmleft.Show(this.dockPanel1, DockState.DockLeft);
            frmstart.Show(this.dockPanel1);
            
        }
        //状态栏定义
        private void toolStripShow()
        {
            this.toolStripStatusLabel3.Text = "当前操作员:";
            this.toolStripStatusLabel4.Text = user._USERNAME;
            this.toolStripStatusLabel8.Text = "当前分店:";
            this.toolStripStatusLabel9.Text = shop.ShuoName.Trim();
        }
        

        DataTable dt;
        private void FrmParent_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000;
            timer1.Start();
            //加载状态栏
            toolStripShow();
            string comstr = "select * from SYS_MENU where MCAPTION <> '-'";
            dt = SqlHelper.ExecuteDataset(ClsComm.GetConString(), CommandType.Text, comstr).Tables[0];
            
            
            if (dt.Rows.Count >= 0)
            {
                ClsMenu menu = new ClsMenu();
                ToolStripMenuItem TopMenu = new ToolStripMenuItem();
                Bind_Menu(ref TopMenu, "0");
               
            }
            this.MainMenuStrip = this.menuStrip1;
        }
        #region  菜单栏调用
        
        private void Bind_Menu(ref ToolStripMenuItem TopMenu,string ParentId)
        {
            DataView view = new DataView(dt);
            //过滤下节菜单
            view.RowFilter = "MPARID=" + ParentId;
            ToolStripMenuItem subMenu;
            foreach(DataRowView dv in view ){
                subMenu = new ToolStripMenuItem();
                subMenu.Text = dv["MCAPTION"].ToString();
                subMenu.Name = dv["MID"].ToString();
                
                if (ParentId == "0")
                {
                    this.menuStrip1.Items.Add(subMenu);
                }
                else {
                    //扩展属性,可以加载任何想要的值,这里是FRM_NAME属性加载.
                    string s = dv["FRMNAME"].ToString().Trim();
                    int i= s.IndexOf("Frm");
                    if (i != -1)
                    {
                        subMenu.Tag = dv["CLSNAME"].ToString().Trim() + dv["FRMNAME"].ToString().Trim();
                        //给子菜单加载菜单加事件.
                        subMenu.Click += new EventHandler(subMenu_Click);
                    }else{
                        subMenu.Tag = dv["CLSNAME"].ToString().Trim() + dv["FRMNAME"].ToString().Trim();
                        subMenu.Click += new EventHandler(subMenu_Click_1);
                    
                    }
                    TopMenu.DropDownItems.Add(subMenu);


                }
                Bind_Menu(ref subMenu, dv["MID"].ToString());
            }

        }

        private void subMenu_Click_1(object sender,EventArgs e) {

            try
            {
                 string frmname = ((ToolStripMenuItem)sender).Tag.ToString();
                Assembly asm = Assembly.Load(Assembly.GetEntryAssembly().GetName().Name);
                object frmobj = asm.CreateInstance(frmname);
                Form f = (Form)frmobj;
                //f.MdiParent = this;
                f.Show();
            }
            catch (Exception ex) {

                MessageBox.Show(ex.ToString());
            }
           
        }
        /// <summary>
        /// 菜单子节点事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void subMenu_Click(object sender, EventArgs e)
        {
            //tag属性在这里有用到。这里用的是加载FRM的方法.
            string frmname = ((ToolStripMenuItem)sender).Tag.ToString();
            Create_From(frmname,sender.ToString());
        }
        /// <summary>
        /// 动态调用子窗体只实例化一次
        /// </summary>
        /// <param name="frmname"></param>
        public void Create_From(string frmname,string sender)
        {
           
            if (frmname == "")
            {
                MessageBox.Show("您没有此权限!");
            }
             else
              {
                  Assembly asm = Assembly.Load(Assembly.GetEntryAssembly().GetName().Name);
                  object frmobj = asm.CreateInstance(frmname);
                  FrmBase frmChild = (FrmBase)frmobj;
                  if (this.MdiChildren.Count() == 0)
                  {
                      frmChild.Tag = frmname;
                      frmChild.Text = sender;
                      frmChild.Show(this.dockPanel1);
                  }
                  else
                  {

                      for (int i = 0; i < this.MdiChildren.Count(); i++)
                      {
                          try
                          {
                              if (frmname == this.MdiChildren[i].Name)
                              {
                                  
                                  frmChild.Activate();
                                 

                              }
                              else
                              {
                                 
                                  frmChild.Tag = frmname;
                                  frmChild.Text = sender;
                                  if (frmChild.Name == "FrmUserList") {
                                      
                                      sendshop(shop);
                                  }
                                  frmChild.Show(this.dockPanel1);
                                  
                                 
                              }
                          }
                          catch (Exception ex) {
                              MessageBox.Show(ex.ToString());
                          }

                      }
                  }
              }
           
        
        }
       #endregion

        private void timer1_Tick(object sender, EventArgs e)
        {
            
            this.toolStripStatusLabel1.Text = "当前时间:";
            this.toolStripStatusLabel2.Text = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");
            
        }
        /// <summary>
        /// 打开导航栏
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            
            foreach (DockContent document in dockPanel1.Documents)
            {
                if (document.TabText == "导航窗口")
                {
                    frmleft.Activate();
                    break;
                }
                
                
            }
            //FrmLeft frm = new FrmLeft();
            //frm.Show(this.dockPanel1,DockState.DockLeft);

        }

        private void toolStripButton9_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("是否确定退出系统!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
            {
                this.Close();

            }
        }

        /// <summary>
        /// 打开本文件中的calc.exe
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            System.Diagnostics.ProcessStartInfo StartInfo = new System.Diagnostics.ProcessStartInfo();
            StartInfo.FileName = Application.StartupPath + @"\calc.exe";
            System.Diagnostics.Process.Start(StartInfo);
           
        }

      
        /// <summary>
        /// 保存dockpanler的文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmParent_FormClosing(object sender, FormClosingEventArgs e)
        {
            string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
            if (File.Exists(configFile) == false)
            {
                this.dockPanel1.SaveAsXml(configFile);
            }
            else
            {
                File.Delete(configFile);
            }
        }

    

    

      

      

      

       

       
              
    }
}



原创粉丝点击