Please refer to the attached sample project and follow the steps illustrated on the gif file.
Workaround: you can control which items to be closed:
public RadForm1()
{
InitializeComponent();
ContextMenuService menuService = this.radDock1.GetService<ContextMenuService>();
menuService.ContextMenuDisplaying += menuService_ContextMenuDisplaying;
}
RadDockLocalizationProvider localizationProvider = RadDockLocalizationProvider.CurrentProvider;
private void menuService_ContextMenuDisplaying(object sender, ContextMenuDisplayingEventArgs e)
{
foreach (RadItem item in e.MenuItems)
{
if (item.Text == localizationProvider.GetLocalizedString(RadDockStringId.ContextMenuCloseAll))
{
item.Click += item_ClickContextMenuCloseAll;
}
else if (item.Text == localizationProvider.GetLocalizedString(RadDockStringId.ContextMenuCloseAllButThis))
{
item.Click += item_ClickContextMenuCloseAllButThis;
}
}
}
private void item_ClickContextMenuCloseAllButThis(object sender, EventArgs e)
{
foreach (DockWindow dw in this.radDock1.DockWindows)
{
if (dw == this.radDock1.ActiveWindow)
{
continue;
}
dw.CloseAction = DockWindowCloseAction.Hide;
dw.Close();
}
}
private void item_ClickContextMenuCloseAll(object sender, EventArgs e)
{
foreach (DockWindow dw in this.radDock1.DockWindows)
{
dw.CloseAction = DockWindowCloseAction.Hide;
dw.Close();
}
}