|
Query |
Response | |
|
How to get the form (docked or mdichild) for which the user clicked close button?
How to cancel closing docked form and mdichild form?
|
You can get the closed button pressed form and can cancel the form closing using DockVisibilityChanging event Please make use of the below code snippet for the same.
Code snippet[C#]
| |
|
How to allow to form's closing event to fire when the user click on close button of a docked form or mdichild. |
You can set the FormClosing event gets fired by invoking the FormClosing event from MdiChildActivate. Please make use of the below code snippet for the same.
Code snippet[C#]
We have prepared a sample for your reference and it can be downloaded from the below link.
Sample: TabbedMDI_DockingManagerSample
|
|
/// <summary>
/// Invoked when DockVisibility is Changed
/// </summary>
private void DockingManager1_DockVisibilityChanged(object sender, DockVisibilityChangedEventArgs arg)
{
this.RaiseMDIChildFormClosed(arg.Control);
}
/// <summary>
/// Invoked when DockVisibility is Changing
/// </summary>
private void DockingManager1_DockVisibilityChanging1(object sender, DockVisibilityChangingEventArgs arg)
{
if (!canCloseOutputMDI && this.dockingManager1.IsMDIMode(arg.Control) && this.dockingManager1.GetDockLabel(arg.Control) == "Output")
arg.Cancel = true;
canCloseOutputMDI = false;
}
/// <summary>
/// Invoked when before Form is closing
/// </summary>
/// <param name="e"></param>
protected override void OnFormClosing(FormClosingEventArgs e)
{
foreach (var item in this.dockingManager1.ControlsArray)
{
canCloseOutputMDI = true;
if(this.dockingManager1.GetDockVisibility(item))
this.dockingManager1.SetDockVisibility(item, false);
}
e.Cancel = false;
base.OnFormClosing(e);
}
/// <summary>
/// This event will be triggered when MDIChild in DockingManager is closed
/// </summary>
private void ChildFormClosed(object sender, EventArgs e)
{
if (sender is Control)
{
MessageBox.Show((sender as Control).Name + " : Form Closed");
}
}
|