To reproduce: 1.Add a RadForm with RibbonFormBehavior. 2.Add a RadDock with one DocumentWindow and a button inside the ribbon. 3.Create another RadForm with RibbonFormBehavior. 4.Use the following code snippet: public partial class Form1 : RadForm { public Form1() { InitializeComponent(); } private void radButtonElement1_Click(object sender, EventArgs e) { this.IsMdiContainer = true; this.radDock1.AutoDetectMdiChildren = true; ChildForm form = new ChildForm(); form.Text = "MDI Child 1"; form.MdiParent = this; form.Show(); } } Workaround: Set RadDock.AutoDetectMdiChildren property to false.
To reproduce set AutoDetectMdiChildren to true and add a DocumentWindow to RadDock, using the AddDocument method Workaround: 1. Set AutoDetectMdiChildren to false 2. Use HostWindow instead of DocumentWindow
When custom controls that are containing SplitContainers and TableLayoutPanels are used in RadDock there is invalid resizing behaviour. The underlying controls are not properly resized when the entire form is resized as well. The issue exists only on Windows 7 x64 machines. Workaround: Use RadLayoutControl instead of the TableLayoutPanel.
Workaround: this.toolTabStrip1.CaptionElement.RightToLeft = false;
Workaround: check the designer file and make sure that all existing tool windows are either added to the RadDock or deleted
To reproduce: RadDock goRadDock = new RadDock(); public RadForm1() { InitializeComponent(); this.Load+=RadForm1_Load; } private void RadForm1_Load(object sender, System.EventArgs e) { goRadDock.Dock = DockStyle.Fill; this.Controls.Add(goRadDock); Telerik.WinControls.UI.RadListView loPanorama = new RadListView(); HostWindow loHost; //' Set Panorama Properties // loPanorama.BackColor = System.Drawing.Color.Transparent; loPanorama.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama.Location = new System.Drawing.Point(0, 0); loPanorama.Margin = new System.Windows.Forms.Padding(0); loPanorama.Name = "Panorama"; // loPanorama.ScrollBarThickness = 1; // loPanorama.ScrollingBackground = true; loPanorama.ShowGroups = true; loPanorama.Size = new System.Drawing.Size(787, 315); loHost = goRadDock.DockControl(loPanorama, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost.Text = "Panorama"; loHost.DockState = DockState.AutoHide; Telerik.WinControls.UI.RadPanorama loPanorama2 = new Telerik.WinControls.UI.RadPanorama(); HostWindow loHost2; //' Set Panorama2 Properties // loPanorama2.BackColor = System.Drawing.Color.Transparent; loPanorama2.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama2.Location = new System.Drawing.Point(0, 0); loPanorama2.Margin = new System.Windows.Forms.Padding(0); loPanorama2.Name = "Panorama2"; loPanorama2.ScrollBarThickness = 1; loPanorama2.ScrollingBackground = true; loPanorama2.ShowGroups = true; loPanorama2.Size = new System.Drawing.Size(787, 315); loHost2 = goRadDock.DockControl(loPanorama2, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost2.Text = "Panorama2"; loHost2.DockState = DockState.AutoHide; Telerik.WinControls.UI.RadPanorama loPanorama3 = new Telerik.WinControls.UI.RadPanorama(); HostWindow loHost3; //' Set Panorama2 Properties // loPanorama3.BackColor = System.Drawing.Color.Transparent; loPanorama3.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama3.Location = new System.Drawing.Point(0, 0); loPanorama3.Margin = new System.Windows.Forms.Padding(0); loPanorama3.Name = "Panorama3"; loPanorama3.ScrollBarThickness = 1; loPanorama3.ScrollingBackground = true; loPanorama3.ShowGroups = true; loPanorama3.Size = new System.Drawing.Size(787, 315); loHost3 = goRadDock.DockControl(loPanorama3, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost3.Text = "Panorama3"; loHost3.DockState = DockState.AutoHide; Telerik.WinControls.UI.RadPanorama loPanorama4 = new Telerik.WinControls.UI.RadPanorama(); HostWindow loHost4; //' Set Panorama2 Properties // loPanorama4.BackColor = System.Drawing.Color.Transparent; loPanorama4.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama4.Location = new System.Drawing.Point(0, 0); loPanorama4.Margin = new System.Windows.Forms.Padding(0); loPanorama4.Name = "Panorama4"; loPanorama4.ScrollBarThickness = 1; loPanorama4.ScrollingBackground = true; loPanorama4.ShowGroups = true; loPanorama4.Size = new System.Drawing.Size(787, 315); loHost4 = goRadDock.DockControl(loPanorama4, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost4.Text = "Panorama4"; loHost4.DockState = DockState.AutoHide; } Workaround: RadDock goRadDock = new RadDock(); public RadForm1() { InitializeComponent(); goRadDock.BeginInit(); goRadDock.Dock = DockStyle.Fill; this.Controls.Add(goRadDock); RadPanorama loPanorama = new RadPanorama(); HostWindow loHost; loPanorama.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama.Location = new System.Drawing.Point(0, 0); loPanorama.Margin = new System.Windows.Forms.Padding(0); loPanorama.Name = "Panorama"; // loPanorama.ScrollBarThickness = 1; // loPanorama.ScrollingBackground = true; loPanorama.ShowGroups = true; loPanorama.Size = new System.Drawing.Size(787, 315); loHost = goRadDock.DockControl(loPanorama, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost.Text = "Panorama"; Telerik.WinControls.UI.RadPanorama loPanorama2 = new Telerik.WinControls.UI.RadPanorama(); HostWindow loHost2; //' Set Panorama2 Properties // loPanorama2.BackColor = System.Drawing.Color.Transparent; loPanorama2.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama2.Location = new System.Drawing.Point(0, 0); loPanorama2.Margin = new System.Windows.Forms.Padding(0); loPanorama2.Name = "Panorama2"; //loPanorama2.ScrollBarThickness = 1; // loPanorama2.ScrollingBackground = true; loPanorama2.ShowGroups = true; loPanorama2.Size = new System.Drawing.Size(787, 315); loHost2 = goRadDock.DockControl(loPanorama2, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost2.Text = "Panorama2"; Telerik.WinControls.UI.RadPanorama loPanorama3 = new Telerik.WinControls.UI.RadPanorama(); HostWindow loHost3; //' Set Panorama2 Properties // loPanorama3.BackColor = System.Drawing.Color.Transparent; loPanorama3.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama3.Location = new System.Drawing.Point(0, 0); loPanorama3.Margin = new System.Windows.Forms.Padding(0); loPanorama3.Name = "Panorama3"; loPanorama3.ScrollBarThickness = 1; loPanorama3.ScrollingBackground = true; loPanorama3.ShowGroups = true; loPanorama3.Size = new System.Drawing.Size(787, 315); loHost3 = goRadDock.DockControl(loPanorama3, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost3.Text = "Panorama3"; Telerik.WinControls.UI.RadPanorama loPanorama4 = new Telerik.WinControls.UI.RadPanorama(); HostWindow loHost4; //' Set Panorama2 Properties // loPanorama4.BackColor = System.Drawing.Color.Transparent; loPanorama4.Dock = System.Windows.Forms.DockStyle.Fill; loPanorama4.Location = new System.Drawing.Point(0, 0); loPanorama4.Margin = new System.Windows.Forms.Padding(0); loPanorama4.Name = "Panorama4"; loPanorama4.ScrollBarThickness = 1; loPanorama4.ScrollingBackground = true; loPanorama4.ShowGroups = true; loPanorama4.Size = new System.Drawing.Size(787, 315); loHost4 = goRadDock.DockControl(loPanorama4, Telerik.WinControls.UI.Docking.DockPosition.Left); loHost4.Text = "Panorama4"; goRadDock.EndInit(); loHost.DockState = DockState.AutoHide; loHost2.DockState = DockState.AutoHide; loHost3.DockState = DockState.AutoHide; loHost4.DockState = DockState.AutoHide; }
To reproduce: - Add some windows before adding loading the layout. Do not set the active window. If mDockForms Then Dim df1 As New Form Dim df2 As New Form Dim df3 As New Form df1.BackColor = Color.Red df1.Text = "Docked Form 1" df1.Name = "DockedForm1" df2.BackColor = Color.White df2.Text = "Docked Form 2" df2.Name = "DockedForm2" df3.BackColor = Color.Blue df3.Text = "Docked Form 3" df3.Name = "DockedForm3" RadDock1.DockControl(df1, Docking.DockPosition.Left) RadDock1.DockControl(df2, Docking.DockPosition.Left) RadDock1.DockControl(df3, Docking.DockPosition.Left) df1.Show() df2.Show() df3.Show() End If RadDock1.LoadFromXml(xmlfile) - Start the application, select a window and save the layout. - Load the layout and you will notice that the last window is active. Workaround: Me.RadDock1.ActiveWindow = RadDock1.DockControl(df3, Docking.DockPosition.Left) Woraround2 - Load the layout in empty RadDock and use it to retrieve the proper index: Dim rd2 As New Docking.RadDock rd2.LoadFromXml(xmlfile) For Each c As Control In rd2.Controls If TypeOf c Is Docking.ToolTabStrip Then RadDock1.ActiveWindow = CType(RadDock1.Controls(1), Docking.ToolTabStrip).TabPanels(CType(c, Docking.ToolTabStrip).SelectedIndex) End If Next
The issue is caused by the fact that the drop down button has its own theming in RadDock, which gets applied to the newly added button. To reproduce: protected override void OnLoad(EventArgs e) { base.OnLoad(e); RadDockEvents.TabStripItemCreating += RadDockEvents_TabStripItemCreating; AddDock(); ThemeResolutionService.ApplicationThemeName = "VisualStudio2012Dark"; } void RadDockEvents_TabStripItemCreating(object sender, TabStripItemCreatingEventArgs args) { RadDropDownButtonElement btn = new RadDropDownButtonElement(); btn.Margin = new System.Windows.Forms.Padding(80, 5, 5, 5); btn.MinSize = new System.Drawing.Size(50, 20); btn.Items.Add(new RadMenuItem("asasda")); args.TabItem.Children.Add(btn); } Workaround: use the themes in the attachments
To reproduce: 1. Add two RadDock controls on the form and one RadButton. 2. Use the following code snippet: public Form1() { InitializeComponent(); this.IsMdiContainer = true; this.radDock1.AutoDetectMdiChildren = true; this.radDock2.AutoDetectMdiChildren = false; this.radDock1.ActiveWindowChanged += radDock1_ActiveWindowChanged; } private void radButton1_Click(object sender, EventArgs e) { RadForm f = new RadForm(); f.MdiParent = this; f.Show(); f.Text = DateTime.Now.ToLongTimeString(); } private void radDock1_ActiveWindowChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e) { Console.WriteLine("ActiveWindowChanged"); } If you click the button you will notice that the last added DocumentWindow is not active. Workaround: this.radDock1.DockWindowAdded += radDock1_DockWindowAdded; private void radDock1_DockWindowAdded(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e) { this.radDock1.ActiveWindow = e.DockWindow; }
Workaround: use the RadDock.ActiveWindowChanging event instead.
To reproduce: private void commandBarButton1_Click(object sender, EventArgs e) { Telerik.WinControls.UI.RadForm frm; frm = new Telerik.WinControls.UI.RadForm(); frm.Text = "Test" + num; num++; Telerik.WinControls.UI.Docking.HostWindow host; host = new Telerik.WinControls.UI.Docking.HostWindow(frm, Telerik.WinControls.UI.Docking.DockType.Document); this.radDock1.DockWindow(host, this.radDock1.GetDefaultDocumentTabStrip(true), Telerik.WinControls.UI.Docking.DockPosition.Fill); } Workaround: this.radDock1.TransactionCommitting += radDock1_TransactionCommitting; private void radDock1_TransactionCommitting(object sender, RadDockTransactionCancelEventArgs e) { if (e.Transaction.TransactionType == DockTransactionType.DragDrop && e.Transaction.TargetState == DockState.Docked && !( e.Transaction.AssociatedWindows.First() is ToolWindow)) { FieldInfo fi = typeof(RadDockTransaction).GetField("targetState",BindingFlags.NonPublic |BindingFlags.Instance); fi.SetValue(e.Transaction, DockState.TabbedDocument); } }
Workaround - set AutoScroll = false to Form that is being shows as MDI child
DECLINED: Currently, RadDock is designed to only persist the position of tool windows. The document windows are consider to be kind of dynamic content presenters which need to be opened/closed at runtime. ORIGINAL DESCRIPTION: Create a single ToolWindow, set its DockState to Floating, add this window to a RadDock. Start the application, hide the window, save the layout, then load the layout, the window is not hidden. In the xml there is no node with ToolWindow To reproduce: public partial class Form1 : Form { public Form1() { InitializeComponent(); ToolWindow newTool = new ToolWindow(); newTool.Name = "New Tool"; newTool.CloseAction = DockWindowCloseAction.Hide; this.radDock1.AddDocument(newTool); newTool.DockState = DockState.Floating; this.radDock1.ActiveWindow = newTool; } private void radButton1_Click(object sender, EventArgs e) { this.radDock1.SaveToXml(@"..\..\layout1.xml"); } private void radButton2_Click(object sender, EventArgs e) { this.radDock1.LoadFromXml(@"..\..\layout1.xml"); } }
To reproduce: - Add 2 RadFoms to a raddock in mdi mode. - Dock the windows by using the left or right docking guide in the center. - You will notice that the behavior is the same as like using the left or right side guides.
To reproduce : 1. Add three DocumentWindows. 2. Dock one of the windows to the top of the container. 3. The ActiveWindowChanged event is fired but the window is not marked as active. Clicking on this window does not take affect and it is still not activated. Please refer to the attached gif file. Workaround: public Form1() { InitializeComponent(); this.radDock1.ActiveWindowChanged += radDock1_ActiveWindowChanged; this.radDock1.DockStateChanged += radDock1_DockStateChanged; } private void radDock1_ActiveWindowChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e) { UpdateSelectedFont(e); } private void radDock1_DockStateChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e) { if (e.DockWindow.DockState == Telerik.WinControls.UI.Docking.DockState.Docked) { UpdateSelectedFont(e); } } private void UpdateSelectedFont(DockWindowEventArgs e) { foreach (DockWindow dw in this.radDock1.DockWindows.DocumentWindows) { if (dw.TabStripItem.Text == e.DockWindow.TabStripItem.Text) { dw.TabStripItem.Font = new Font(dw.TabStripItem.Font, FontStyle.Bold); } else { dw.TabStripItem.Font = new Font(dw.TabStripItem.Font, FontStyle.Regular); } } }
To reproduce: 1. Add several DocumentWindows and ToolWindows to the RadDock. 2. Add RadButton controls to the available windows. 3. Subscribe to the ActiveWindowChanged event. 4. Run the application and click over the strip item of one ToolWindow. As a result the ActiveWindowChanged event is fired. Click over the RadButton for a DocumentWindow. You will notice that the ActiveWindowChanged event is not fired. Note: When the active DocumentWindow contains controls ,e.g. RadButton, the tab strip item is not bold. Workaround: static RadDock dock; public Form1() { InitializeComponent(); dock = this.radDock1; Application.AddMessageFilter(new MyFilterClass()); } public const int WM_LBUTTONDOWN = 0x0201; public class MyFilterClass : IMessageFilter { public bool PreFilterMessage(ref Message m) { if (m.Msg == WM_LBUTTONDOWN) { Point pt = dock.PointToClient(Cursor.Position); var clickedElement = dock.GetChildAtPoint(pt, GetChildAtPointSkip.Invisible) ; while (!(clickedElement is ToolWindow || clickedElement is DocumentWindow) && clickedElement != null) { ToolTabStrip tabStrip = clickedElement as ToolTabStrip; if (tabStrip != null) { clickedElement = tabStrip.ActiveWindow; } else { clickedElement = clickedElement.GetChildAtPoint(pt, GetChildAtPointSkip.Invisible); } } if (clickedElement != null) { dock.ActiveWindow = clickedElement as DockWindow; } } return false; } } private void radDock1_ActiveWindowChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e) { e.DockWindow.TabStripItem.Font = new Font(e.DockWindow.TabStripItem.Font, FontStyle.Bold); foreach (DocumentWindow dw in this.radDock1.DockWindows.DocumentWindows) { if (dw.Name != e.DockWindow.Name) { dw.TabStripItem.Font = new Font(e.DockWindow.TabStripItem.Font, FontStyle.Regular); } } }
To reproduce: Me.RadDock1.DocumentTabsAlignment = Telerik.WinControls.UI.TabStripAlignment.Left Me.RadDock1.DocumentTabsTextOrientation = Telerik.WinControls.UI.TabStripTextOrientation.Vertical Please refer to the attached file. Workaround: Me.RadDock1.DocumentTabsAlignment = Telerik.WinControls.UI.TabStripAlignment.Left Me.RadDock1.DocumentTabsTextOrientation = Telerik.WinControls.UI.TabStripTextOrientation.Vertical For Each d As DocumentWindow In Me.RadDock1.DockWindows.DocumentWindows d.TabStripItem.AngleTransform = 180 Next Or: foreach (DocumentWindow d in this.radDock1.DockWindows.DocumentWindows) { d.TabStripItem.FlipText = true ; }
To reproduce: Add a RadDock with RightToLeft - Yes and add a few document windows. You will see that the Tabs will be rendered LeftToRight. The insertion behavior is correct.