DockPanel2 保存各个窗口的状态

这个功能太强大了,需要好好研究原代码

load中    

           Frm1 f1= new Frm1();
            Frm2 f2= new Frm2();
            Frm3 f3= new Frm3();
            Frm4 f4= new Frm4();

            m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);
            string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");

            if (File.Exists(configFile))
                dockPanel1.LoadFromXml(configFile, m_deserializeDockContent);

 


            f1.Show(dockPanel1, DockState.DockLeft);
            f2.Show(f1.Pane, DockAlignment.Bottom, 0.3);
            f3.Show(dockPanel1, DockState.Document);
            f4.Show(f3.Pane,DockAlignment.Bottom,0.3); 

 

closing中

            string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
                dockPanel1.SaveAsXml(configFile);

 

        private IDockContent GetContentFromPersistString(string persistString)
        {
            if (persistString == typeof(Frm1).ToString())
                return f1;
            else if (persistString == typeof(Frm2).ToString())
                return f2;
            else if (persistString == typeof(Frm3).ToString())
                return f3;
            else if (persistString == typeof(Frm4).ToString())
                return f4;
            return null;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DockPanel Suite 是一个用于 Windows 窗体应用程序开发的开源工具包,它提供了一个易于使用的 Docking 系统,可以为应用程序提供多窗口管理功能。如果要实现多个窗口之间的通信,可以通过使用事件和委托来实现。 具体来说,可以在窗口类中定义事件,当事件被触发时,可以调用委托将数据传递给其他窗口。例如,假设我们有两个窗口 A 和 B,窗口 A 中定义了一个事件 MyEvent,我们可以在窗口 B 中订阅这个事件,然后在窗口 A 中触发这个事件,并传递需要传递的数据。代码示例: 在窗口 A 中定义事件: ``` public class WindowA : DockContent { public delegate void MyEventHandler(object sender, MyEventArgs e); public event MyEventHandler MyEvent; private void OnMyEvent() { if (MyEvent != null) { MyEventArgs args = new MyEventArgs(); args.Data = "Hello, World!"; MyEvent(this, args); } } // 触发事件的代码 private void button1_Click(object sender, EventArgs e) { OnMyEvent(); } } public class MyEventArgs : EventArgs { public string Data { get; set; } } ``` 在窗口 B 中订阅事件: ``` public class WindowB : DockContent { private void WindowB_Load(object sender, EventArgs e) { WindowA windowA = new WindowA(); windowA.MyEvent += new WindowA.MyEventHandler(windowA_MyEvent); } private void windowA_MyEvent(object sender, MyEventArgs e) { MessageBox.Show(e.Data); } } ``` 这样,在窗口 A 中触发 MyEvent 事件时,窗口 B 就可以接收到事件并处理数据了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值