From 4e0f4999a00480fe5fffed31a04f62d9485a49c0 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Tue, 7 Oct 2025 14:52:53 +0200 Subject: [PATCH] enure handle created on load data complete --- .../Dialogs/RadFlyoutBase.cs | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/Pilz.UI.WinForms.Telerik/Dialogs/RadFlyoutBase.cs b/Pilz.UI.WinForms.Telerik/Dialogs/RadFlyoutBase.cs index f78c06a..6f95de4 100644 --- a/Pilz.UI.WinForms.Telerik/Dialogs/RadFlyoutBase.cs +++ b/Pilz.UI.WinForms.Telerik/Dialogs/RadFlyoutBase.cs @@ -8,6 +8,7 @@ namespace Pilz.UI.WinForms.Telerik.Dialogs; public partial class RadFlyoutBase : UserControl { private bool addedControlsToUi; + private RunWorkerCompletedEventArgs loadDataEventArgs; protected RadButton radButton_Cancel; protected RadButton radButton_Confirm; @@ -34,6 +35,9 @@ public partial class RadFlyoutBase : UserControl [DefaultValue(true)] public bool RegisterDialogCancel { get; set; } = true; + [DefaultValue(true)] + public bool EnsureHandleOnDataLoadComplete { get; set; } = true; + public new Size PreferredSize { get; set; } = Size.Empty; [DefaultValue(true)] @@ -113,7 +117,6 @@ public partial class RadFlyoutBase : UserControl protected RadFlyoutBase() { InitializeComponent(); - ParentChanged += FlyoutDialogBase_ParentChanged; bgWorker_LoadData.DoWork += BgWorker_LoadData_DoWork; bgWorker_LoadData.RunWorkerCompleted += BgWorker_LoadData_RunWorkerCompleted; } @@ -125,10 +128,17 @@ public partial class RadFlyoutBase : UserControl protected virtual void BgWorker_LoadData_RunWorkerCompleted(object? sender, RunWorkerCompletedEventArgs e) { - if (InvokeRequired) - BeginInvoke(() => OnLoadDataCompleted(e)); + loadDataEventArgs = null; + + if (!EnsureHandleOnDataLoadComplete || IsHandleCreated) + { + if (InvokeRequired) + BeginInvoke(() => OnLoadDataCompleted(e)); + else + OnLoadDataCompleted(e); + } else - OnLoadDataCompleted(e); + loadDataEventArgs = e; } protected virtual void LoadData() @@ -236,6 +246,19 @@ public partial class RadFlyoutBase : UserControl tableLayoutPanel_ActionPanel.ResumeLayout(false); } + protected override void OnHandleCreated(EventArgs e) + { + base.OnHandleCreated(e); + + if (EnsureHandleOnDataLoadComplete && loadDataEventArgs != null) + { + if (InvokeRequired) + BeginInvoke(() => OnLoadDataCompleted(loadDataEventArgs)); + else + OnLoadDataCompleted(loadDataEventArgs); + } + } + protected override void OnLoad(EventArgs e) { if (!addedControlsToUi && !DesignMode) @@ -253,7 +276,13 @@ public partial class RadFlyoutBase : UserControl base.OnLoad(e); } - protected virtual void FlyoutDialogBase_ParentChanged(object? sender, EventArgs e) + protected override void OnParentChanged(EventArgs e) + { + base.OnParentChanged(e); + HandleOnParentChanged(e); + } + + protected virtual void HandleOnParentChanged(EventArgs e) { var frm = FindForm();