private void OnDockingFloatingWindowDisposed(object sender, EventArgs e) { // Cast to correct type and unhook event handlers so garbage collection can occur KryptonDockingFloatingWindow floatingWindowElement = (KryptonDockingFloatingWindow)sender; floatingWindowElement.Disposed -= OnDockingFloatingWindowDisposed; // Remove the elemenet from our child collection as it is no longer valid InternalRemove(floatingWindowElement); }
/// <summary> /// Perform docking element specific actions for loading a child xml. /// </summary> /// <param name="xmlReader">Xml reader object.</param> /// <param name="pages">Collection of available pages.</param> /// <param name="child">Optional reference to existing child docking element.</param> protected override void LoadChildDockingElement(XmlReader xmlReader, KryptonPageCollection pages, IDockingElement child) { if (child != null) { child.LoadElementFromXml(xmlReader, pages); } else { // Create a new floating window and then reload it KryptonDockingFloatingWindow floatingWindow = AddFloatingWindow(xmlReader.GetAttribute("N")); floatingWindow.LoadElementFromXml(xmlReader, pages); } }
private KryptonDockingFloatingWindow CreateFloatingWindow(string name) { // Create a floatspace and floating window for hosting the floatspace KryptonDockingFloatspace floatSpaceElement = new KryptonDockingFloatspace("Floatspace"); KryptonDockingFloatingWindow floatingWindowElement = new KryptonDockingFloatingWindow(name, OwnerForm, floatSpaceElement); floatingWindowElement.Disposed += OnDockingFloatingWindowDisposed; InternalAdd(floatingWindowElement); // Events are generated from the parent docking manager KryptonDockingManager dockingManager = DockingManager; if (dockingManager != null) { // Generate events so the floating window/dockspace appearance can be customized FloatingWindowEventArgs floatingWindowArgs = new FloatingWindowEventArgs(floatingWindowElement.FloatingWindow, floatingWindowElement); FloatspaceEventArgs floatSpaceArgs = new FloatspaceEventArgs(floatSpaceElement.FloatspaceControl, floatSpaceElement); dockingManager.RaiseFloatingWindowAdding(floatingWindowArgs); dockingManager.RaiseFloatspaceAdding(floatSpaceArgs); } return(floatingWindowElement); }
/// <summary> /// Initialize a new instance of the FloatingWindowEventArgs class. /// </summary> /// <param name="floatingWindow">Reference to floating window instance.</param> /// <param name="element">Reference to docking floating winodw element that is managing the floating window.</param> public FloatingWindowEventArgs(KryptonFloatingWindow floatingWindow, KryptonDockingFloatingWindow element) { FloatingWindow = floatingWindow; FloatingWindowElement = element; }