| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- using DevExpress.XtraBars.Docking2010.Views;
 
- using DevExpress.XtraBars.Docking2010.Views.Tabbed;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows.Forms;
 
- using Ips.Library.Basic;
 
- using DevExpress.XtraBars.Docking2010;
 
- using DevExpress.XtraBars.Docking;
 
- using Ips.Library.DxpLib;
 
- using DevExpress.Utils.Extensions;
 
- using DevExpress.XtraEditors;
 
- namespace Ips.Library.DxpLib
 
- {
 
-     public static class FormManager
 
-     {
 
-         static XtraForm _mainWin;
 
-         static DocumentManager _documentManager;
 
-         static TabbedView _tabbedView;
 
-         static DockManager _dockManager;
 
-         public static void Init(XtraForm mainWin, DocumentManager documentManager, TabbedView tabbedView, DockManager dockManager)
 
-         {
 
-             _mainWin = mainWin;
 
-             _documentManager = documentManager;
 
-             _tabbedView = tabbedView;
 
-             _dockManager = dockManager;
 
-             _tabbedView.QueryControl += TabbedView_QueryControl;
 
-         }
 
-         private static void TabbedView_QueryControl(object sender, DevExpress.XtraBars.Docking2010.Views.QueryControlEventArgs e)
 
-         {
 
-             try
 
-             {
 
-                 var ctrlType = _mainWin.GetType().Assembly.GetType(e.Document.ControlName);
 
-                 if (ctrlType == null)
 
-                 {
 
-                     MsgHelper.ShowError($"未找到类型【{e.Document.ControlName}】");
 
-                     return;
 
-                 }
 
-                 e.Control = Activator.CreateInstance(ctrlType) as Control;
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 MsgHelper.ShowError($"打开模块【{e.Document.Caption}】出错,错误消息:" + ex.Message);
 
-             }
 
-         }
 
-         public static void ShowDocument<T>(string caption = null, Action<BaseDocument> optionAction = null)
 
-             where T : Control
 
-         {
 
-             string controlName = typeof(T).FullName;
 
-             BaseDocument document = _tabbedView.Documents.FindFirst(d => d.ControlName == controlName);
 
-             if (document == null)
 
-                 document = _tabbedView.AddDocument(caption, controlName);
 
-             optionAction?.Invoke(document);
 
-             _tabbedView.Controller.Activate(document);
 
-         }
 
-         public static void ShowDocument(Control control, string caption = null)
 
-         {
 
-             caption = caption ?? control.Text;
 
-             var document = _tabbedView.Documents.FirstOrDefault(m => m.Caption == caption);
 
-             if (document == null)
 
-             {
 
-                 document = _tabbedView.AddDocument(control, caption);
 
-             }
 
-             _tabbedView.Controller.Activate(document);
 
-         }
 
-         public static void ShowDockPanel<T>(DockingStyle dockingStyle, string caption = null, int index = -1)
 
-             where T : UserControl
 
-         {
 
-             if (_dockManager == null) return;
 
-             var oldPanel = _dockManager.Panels.FirstOrDefault(m => m.ControlContainer != null
 
-                         && m.ControlContainer.Controls.Count > 0
 
-                         && m.ControlContainer.Controls[0] is T
 
-                         );
 
-             if (oldPanel != null)
 
-             {
 
-                 oldPanel.Show();
 
-                 return;
 
-             }
 
-             var targetDockPanel = _dockManager.RootPanels.FirstOrDefault(m => m.Dock == dockingStyle);
 
-             DockPanel dockPanel;
 
-             if (targetDockPanel == null)
 
-             {
 
-                 dockPanel = _dockManager.AddPanel(dockingStyle);
 
-             }
 
-             else
 
-             {
 
-                 dockPanel = _dockManager.AddPanel(DockingStyle.Float);
 
-                 dockPanel.DockAsTab(targetDockPanel);
 
-             }
 
-             var ctrl = Activator.CreateInstance<T>();
 
-             dockPanel.Text = caption ?? ctrl.Text;
 
-             ctrl.Dock = DockStyle.Fill;
 
-             if (dockPanel.ParentPanel != null)
 
-             {
 
-                 dockPanel.ParentPanel.Tabbed = true;
 
-             }
 
-             dockPanel.ControlContainer.Controls.Add(ctrl);
 
-         }
 
-     }
 
- }
 
 
  |