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); } }
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; }
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; }
Workaround: check the designer file and make sure that all existing tool windows are either added to the RadDock or deleted
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.
To reproduce: Sub New() InitializeComponent() Me.WindowState = FormWindowState.Maximized Dim leftWindow As ToolWindow = New ToolWindow() leftWindow.Text = "Left Window" Me.RadDock1.DockWindow(leftWindow, DockPosition.Left) leftWindow.DockState = DockState.AutoHide End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load If Me.RadDock1.DockWindows.ToolWindows.First().ParentForm IsNot Nothing Then Me.RadDock1.DockWindows.ToolWindows.First().ParentForm.Show() End If End Sub Workaround: maximize the form after the auto-hide popup is shown: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load If Me.RadDock1.DockWindows.ToolWindows.First().ParentForm IsNot Nothing Then Me.RadDock1.DockWindows.ToolWindows.First().ParentForm.Show() End If Me.WindowState = FormWindowState.Maximized End Sub
Steps to reproduce: 1. Open the form at design time 2. Add a RadDock 3. Add a MS Panel 4. Put the RadDock inside the panel 5. Dock the Panel to Fill, dock RadDock to Fill as well. 6. Open RadDock's Advanced Layout Designer 7. Add two ToolWindows to the left and redock them in order to share one common container. 8. Hide the ToolWindows by unchecking the check-boxes in the Advanced Layout Designer and save the changes 9. Add a RadPanel (Dock=Fill) to the active ToolWindow. 10. Add a RadGridView (Anchor = Top, Left, Right, Bottom ), a left RadButton (Anchor = Bottom, Left) and a right RadButton (Anchor = Bottom, Right)to the panel. 11. Save thfs in the designer. Select the RadPanel with the grid and the buttons and click Copy. 12. Select the other ToolWindow and paste. 13. Save the form. Close the designer and reopen it again. You will notice that the pasted panel is not as expected. The attached video (drag and drop over the browser to play it) illustrates better the performed steps. Workaround: do not place the RadDock inside a MS Panel. RadDock is supposed to be used as a main container in a form.
To reproduce: - Add a document window uppopn a button click. Put the button inside a tool window. Workaround: Use ActiveWindowChanged event.
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(); } }
Workaround: FloatingWindow.FormElement.TitleBar.CloseButton.Enabled = True
Use the attached project to reproduce. Workaround: private void RadForm1_SizeChanged(object sender, EventArgs e) { toolWindow1.EnsureVisible(); }
To reproduce: - Load a layout with a floating window in it. - The close button is disabled. Workaround: private void RadDock1_LoadedFromXml(object sender, EventArgs e) { foreach (FloatingWindow item in radDock1.FloatingWindows) { item.UpdateCloseButton(); } }
To reproduce: Scenario 1: ToolWindow window1 = new ToolWindow(); window1.Name = "window1"; this.radDock1.DockWindow(window1, DockPosition.Left); ToolWindow window2 = new ToolWindow(); window2.Name = "window2"; this.radDock1.DockWindow(window2, window1, DockPosition.Right); window1.TabStrip.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Relative; window1.TabStrip.SizeInfo.RelativeRatio = new SizeF(0.7f, 0); The expected result is that "window1" takes 70% of the container hosting "window1" and "window2". Scenario 2: ToolWindow window1 = new ToolWindow(); window1.Name = "window1"; this.radDock1.DockWindow(window1, DockPosition.Left); DocumentWindow doc1 = new DocumentWindow(); this.radDock1.AddDocument(doc1, window1, DockPosition.Right); window1.TabStrip.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Relative; window1.TabStrip.SizeInfo.RelativeRatio = new SizeF(0.7f, 0); The expected result is that "window1" takes 70% of the container hosting "window1" and the document window. Workaround: use the SplitPanelSizeMode.Absolute as below: ToolWindow window1 = new ToolWindow(); DocumentWindow doc1 = new DocumentWindow(); private void RadForm1_Load(object sender, EventArgs e) { window1.Name = "window1"; this.radDock1.DockWindow(window1, DockPosition.Left); this.radDock1.AddDocument(doc1, window1, DockPosition.Right); window1.TabStrip.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Absolute; window1.TabStrip.SizeInfo.AbsoluteSize = new Size((int)(this.Size.Width * 0.7),0); this.radDock1.SizeChanged += radDock1_SizeChanged; } private void radDock1_SizeChanged(object sender, EventArgs e) { window1.TabStrip.SizeInfo.AbsoluteSize = new Size((int)(this.Size.Width * 0.7),0); }
To reproduce: open the attached sample project. 1. Drag the documentwindow1 as floating 2. Select tool window 2 3. Select the floating documentwindow1. The ActiveWindowChanging event will be fired twice.
Please refer to the attached sample project and follow the steps in the gif file. The issue appears when the ToolWindow DockState is set to auto-hide for the firs time as well.
To reproduce: - Auto-hide some windows to the left. - Save the layout - Load the layout - The auto-hide popup is shown.
Please refer to the attached sample project. Click the "show" button to open a new MDI child form. Then, press the "close" button. In the Output tab you will notice that the FormClosing/FormClosed events are fired twice. Workaround: use the RadDock's DockWindowClosing and DockWindowClosed events.
To reproduce: Open the attached project and press Ctrl+ Tab in the first text box. Since the textboxes are accepting the Tab, Ctrl + Tab should move to the other control. Workaround // RadTextBox private void TextBoxItem_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if ((e.KeyData & Keys.Tab) == Keys.Tab && (e.KeyData & Keys.Control) == Keys.Control) { e.IsInputKey = true; var item = sender as RadTextBoxItem; this.SelectNextControl(item.HostedControl, true, true, true, true); } } //RadTextBoxControl private void RadTextBoxControl1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if ((e.KeyData & Keys.Tab) == Keys.Tab && (e.KeyData & Keys.Control) == Keys.Control) { e.IsInputKey = true; this.SelectNextControl(sender as RadTextBoxControl, true, true, true, true); } }
Workrarund: If possible create tool-windows with added user controls public static ContentUserControl CreateContentUserControl(RadDock dock) { ContentUserControl uc = new ContentUserControl(); if (dock != null) { ToolWindow hostWindow = new ToolWindow("ContentUserControl"); hostWindow.Controls.Add(uc); hostWindow.Name = uc.Name; dock.FloatWindow(hostWindow); } return uc; }
To reproduce: please refer to the attached sample project and follow the steps illustrated in the gif file. Workaround: after loading the layout, set the MaximumSize for the FloatingWindow: public RadForm1() { InitializeComponent(); this.radDock1.FloatingWindowCreated += radDock1_FloatingWindowCreated; } Size lastSize = Size.Empty; private void radDock1_FloatingWindowCreated(object sender, Telerik.WinControls.UI.Docking.FloatingWindowEventArgs e) { lastSize= e.Window.Size; } private void button1_Click(object sender, EventArgs e) { int reps; if (!int.TryParse(radMaskedEditBox1.Text, out reps)) { MessageBox.Show(this, "Enter a valid number for repititions."); return; } using (var dockLayout = new MemoryStream()) { for (int i = 0; i < reps; i++) { dockLayout.SetLength(0); radDock1.SaveToXml(dockLayout); radDock1.LoadFromXml(dockLayout); foreach (Telerik.WinControls.UI.Docking.FloatingWindow fw in this.radDock1.ActiveFloatingWindows) { fw.MaximumSize = lastSize; } } } }