When closing the MDI child, its FormClosing event is called twice. This is not observed if we close its HostWindow first.
Our application embed a RadDock element.Unfortunately, in a non-systematic way, our application crash with this stack trace:
Our application is a 64bit application (we migrated it to NET6 using Telerik 2022.2.510.60). As I told unfortunately in this case I'm not able to isolate the case in a simple project (as I'm used to to).
It would be useful by your side, however, make a check to the last trace line of the log I've gave to you:
at Telerik.WinControls.UI.ThemedFormBehavior.OnWMNCHitTest(Message& m)
If I decompile your code I find this:
Hi,
I am trying to make a Winforms app high dpi aware. All seems fine except when using a toolwindow on a raddock. Is there some special to setup when I want a Raddock to also autoscale?
I created a GIF to example the behaviour. The left side is at 15% and the right side just at 100%. I move the form from right to left and back. As you can see most controls get resized, except for the size of the toolwindows in the raddock.
The raddock is the only dock on the form and is set to dock in parrent.
At the end of the gif you can see some behaviour when I place the form over both screens. Then the applications breaks. I get this error:
System.ComponentModel.Win32Exception
Maybe this is normal behaviour, but I still want to mention it, because it is possible that in an work environment, someone might to this from time to time. Maybe not on purpose, but still.
Regariding the high DPI, am I doing something wrong?
Thx.
Henk
Hello,
I have downloaded the latest winform version today and launched my application.
I experienced an immediate crash while replacing a document container by a split container.
You can see the small piece of code and the insttruction which is causing the crash ....
Obviously it was working properly before upgrading ...
Can you help? I am now just stuck so a fix or a workaround would be useful...
Thanks,
Olivier D.
if (ctrlOutput == null)
{
Telerik.WinControls.UI.RadSplitContainer mainSplitContainer = null;
ctrlOutput = new ToolWindowOutput(sbOutput);
var Output = new Telerik.WinControls.UI.Docking.ToolWindow();
Output.Text = "Output";
Output.Controls.Add(ctrlOutput);
var toolTabStrip = new Telerik.WinControls.UI.Docking.ToolTabStrip();
toolTabStrip.Controls.Add(Output);
if (this.documentContainer1.Parent == this.radDock1)
{
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
this.radDock1.Controls.Remove(this.documentContainer1); <<<< CRASH HERE
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// need to remplace document container by a split container
mainSplitContainer = new Telerik.WinControls.UI.RadSplitContainer();
mainSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
mainSplitContainer.Controls.Add(this.documentContainer1);
this.radDock1.Controls.Add(mainSplitContainer);
}
else
{
mainSplitContainer = (Telerik.WinControls.UI.RadSplitContainer)this.documentContainer1.Parent;
}
mainSplitContainer.Controls.Add(toolTabStrip);
I was already using telerik 2015 version. that was everything ok. Until I decided to upgrade to 2019 version.
I noticed that the new version is having a problem.
When RadDock Using In RightToLeft mode DocumentTabStrip Window apperance corrupted.
I uploaded sample projects for guidance.
Please help me.
My problem is acute.
Hello,
when drag and dropping documents in Dock layout, after some operations application crashes. Crash can be reproduce even in Dock sample from Telerik (Visual Studio Demo). Drag and drop documents into middle area, let them create more pages in one tab and then drag and drop pages to change their order. After several order changes application crashes to windows.
If you apply one theme to the entire application and want to apply another theme for RadDock as it is demonstrated in this help article, the ThemeName property of RadDock is not respected:
public RadForm1()
{
InitializeComponent();
radDock1.ElementTree.EnableApplicationThemeName = false;
radDock1.ThemeName = "FluentDark";
ThemeResolutionService.ApplicationThemeName = "Windows7";
}
Please run the attached sample project with the latest version. You will notice that the maximized floating window is not loaded properly. This used to work in versions prior to R1 2019.
Workaround: remove "WindowState=Maximized" from the XML.
1. Add 4 ToolWindows - left, top, right, bottom.
2. Add one DocumentWindow at the center.
3. In the Load event set the MainDocumentContainerVisible property to false.
Please refer to the attached sample gif files. Even though the document container is not shown, the docking guides for the tabbed document are visible.
How to reproduce: add a textbox to to a document window of a RadDock in the designer of Visual Studio and set its Anchor property to Top | Left | Right Workaround: set the anchors at run-time after loading the form
To reproduce: run the attached sample project. Click the Close button and then the Show button. You will notice that the list view is no longer available. Workaround: instead of using MDI, set the hostWindow.DockState = DockState.TabbedDocument; before showing the form.
Please use the project attached. 1.Run the application with multi-monitor configuration. 2.Undock toolWindow1 from RadForm1 and maximize it to the different window. 3.Close the application (the layout will be saved). 4.Run the application again. Workaround: handle the FloatingWindowCreated event and set FormWindowState.Maximized for the floating window. protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.radDock1.FloatingWindowCreated+=radDock1_FloatingWindowCreated; if (File.Exists(FileName)) radDock1.LoadFromXml(FileName); } private void radDock1_FloatingWindowCreated(object sender, Telerik.WinControls.UI.Docking.FloatingWindowEventArgs e) { e.Window.WindowState = FormWindowState.Maximized; }
How to reproduce: Check the attached project and video Workaround: Set the MaximumSize property of the control while designing the form and remove it when the application starts
How to reproduce: check the attached project and video Workaround: public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); radDock1.FloatingWindowCreated += RadDock1_FloatingWindowCreated; } private void RadDock1_FloatingWindowCreated(object sender, Telerik.WinControls.UI.Docking.FloatingWindowEventArgs e) { e.Window = new MyWindow(this.radDock1); } } public class MyWindow : FloatingWindow { SizeF oldDpi = new SizeF(1, 1); public MyWindow(RadDock dockManager) : base (dockManager) { } protected override void HandleDpiChanged() { base.HandleDpiChanged(); SizeF descale = new SizeF(1f / this.FormElement.DpiScaleFactor.Width, 1f / this.FormElement.DpiScaleFactor.Height); this.Scale(descale); var dpi = NativeMethods.GetMonitorDpi(Screen.FromRectangle(this.Bounds), NativeMethods.DpiType.Effective); if (oldDpi != dpi) { SizeF sz = new SizeF(dpi.Width / oldDpi.Width, dpi.Height / oldDpi.Height); this.Scale(dpi); } oldDpi = dpi; } }