下面是全部页面的代码程序
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);
}
}
}
}