SandDock 应用示例_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > SandDock 应用示例

SandDock 应用示例

 2013/11/16 12:36:18  刘老财  博客园  我要评论(0)
  • 摘要:直接上代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingTD.SandDock;namespaceSalesClient{publicpartialclassfrmContainer:Form
  • 标签:应用

直接上代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TD.SandDock;

namespace SalesClient
{
    public partial class frmContainer : Form
    {
        public static frmContainer Open;
        public frmContainer()
        {
            InitializeComponent();
            frmContainer.Open = this;
        }

        Sys.AutoSizeFormClass asc = new SalesClient.Sys.AutoSizeFormClass();
        /// <summary>
        /// 根据传来的窗口变量参数,打开一个窗口到sandDock(单件模式)
        /// </summary>
        /// <param name="tempFrm"></param>
        public void OpenForm_SandDockSingle(Form tempFrm)
        {
            if (checkFrm(tempFrm.Name))
            {
                return;
            }

            TabbedDocument newWin = new TabbedDocument();
            newWin.Name = tempFrm.Name;
            newWin.Text = tempFrm.Text;

            newWin.Manager = sandDockManager1;
            newWin.CloseAction = DockControlCloseAction.Dispose;
            WindowOpenMethod openMethod = (WindowOpenMethod)(2);

            tempFrm.Load += new EventHandler(tempFrm_Load);
            tempFrm.SizeChanged += new EventHandler(tempFrm_SizeChanged);

            tempFrm.TopLevel = false;
            tempFrm.Show();

            tempFrm.Parent = newWin;
            tempFrm.Dock = DockStyle.Fill;
            tempFrm.FormBorderStyle = FormBorderStyle.None;
            newWin.Open(openMethod);

        }

        private void tempFrm_Load(object sender, EventArgs e)
        {
            Form frm = sender as Form;

            asc.Initialize(frm);
        }

        private void tempFrm_SizeChanged(object sender, EventArgs e)
        {
            Form frm = sender as Form;
            asc.ReSize(frm);
        }

        /// <summary>
        /// 根据传来的窗口变量参数,打开一个窗口到sandDock(单件模式,关闭以前的)
        /// </summary>
        /// <param name="tempFrm"></param>
        public void OpenForm_SandDockSingleOrClose(Form tempFrm)
        {
            checkFrmOrClose(tempFrm.Name);

            TabbedDocument newWin = new TabbedDocument();
            newWin.Name = tempFrm.Name;
            newWin.Text = tempFrm.Text;
            //newWin.AutoScroll = true;

            newWin.Manager = sandDockManager1;
            newWin.CloseAction = DockControlCloseAction.Dispose;
            WindowOpenMethod openMethod = (WindowOpenMethod)(2);

            tempFrm.TopLevel = false;
            tempFrm.Parent = newWin;
            //tempFrm.Owner = this; 
            tempFrm.Dock = DockStyle.Fill;
            //tempFrm.WindowState = FormWindowState.Maximized;
            tempFrm.FormBorderStyle = FormBorderStyle.None;
            tempFrm.Show();

            newWin.Open(openMethod);

        }
        /// <summary>
        /// 根据传来的窗口变量参数,打开一个窗口到sandDock(非单件模式)
        /// </summary>
        /// <param name="tempFrm"></param>
        public void OpenForm_SandDock(Form tempFrm)
        {
            try
            {
                TabbedDocument newWin = new TabbedDocument();
                newWin.Name = tempFrm.Name;
                newWin.Text = tempFrm.Text;
                // newWin.AutoScroll = true;

                newWin.Manager = sandDockManager1;
                newWin.CloseAction = DockControlCloseAction.Dispose;
                WindowOpenMethod openMethod = (WindowOpenMethod)(2);

                tempFrm.TopLevel = false;
                tempFrm.Parent = newWin;
                //tempFrm.Owner = this; 
                tempFrm.Dock = DockStyle.Fill;
                // tempFrm.Left = (newWin.Width - tempFrm.Width) / 2+newWin.Left;
                //tempFrm.WindowState = FormWindowState.Maximized;
                tempFrm.FormBorderStyle = FormBorderStyle.None;
                tempFrm.Show();

                newWin.Open(openMethod);
            }
            catch (Exception)
            {
                MessageBox.Show("加载窗体(sandDock)出现错误", "窗体加载到sanddock", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// 窗体单件模式
        /// </summary>
        /// <param name="strFrm"></param>
        /// <returns></returns>
        private bool checkFrm(string strFrm)
        {
            bool boolRet = false;
            foreach (TabbedDocument aa in sandDockManager1.Documents)
            {
                if (aa is TabbedDocument && ((TabbedDocument)aa).Name == strFrm)
                {
                    ((TabbedDocument)aa).Activate();
                    boolRet = true;
                }
            }
            return boolRet;
        }
        /// <summary>
        /// 窗体的单件模式(关闭以前窗体)
        /// </summary>
        /// <param name="strFrmName"></param>
        private void checkFrmOrClose(string strFrmName)
        {
            foreach (TabbedDocument aa in sandDockManager1.Documents)
            {
                if (aa is TabbedDocument && ((TabbedDocument)aa).Name == strFrmName)
                {
                    ((TabbedDocument)aa).Close();
                }
            }
        }
    }
}

在FormLoad 里

private void FormMain_Load(object sender, EventArgs e)
        {
            MethodInvoker mi = new MethodInvoker(InvokeMethod);
            this.BeginInvoke(mi);
        }

        private void InvokeMethod()
        {
            frmContainer sanddock = new frmContainer();
            sanddock.TopLevel = false;
            sanddock.FormBorderStyle = FormBorderStyle.None;
            sanddock.Dock = DockStyle.Fill;
            //sanddock.Width = this.spcMain.Panel2.Width;
            //sanddock.Height = this.spcMain.Panel2.Height;
            sanddock.AutoScroll = true;
            this.spcMain.Panel2.Controls.Clear();
            this.spcMain.Panel2.Controls.Add(sanddock);
            sanddock.Show();
        }

 

效果图

 

image

发表评论
用户名: 匿名