From aabcf29326701fc84d6f5c9f3f03312c2d0e7a5f Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Thu, 12 Jun 2025 07:22:57 +0200 Subject: [PATCH] prevent canceling control events --- .../RadValidationProvider/RadValidationProviderEx.cs | 8 ++++---- Pilz.UI.Telerik/Dialogs/RadFlyoutBase.cs | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Pilz.UI.Telerik/Controls/RadValidationProvider/RadValidationProviderEx.cs b/Pilz.UI.Telerik/Controls/RadValidationProvider/RadValidationProviderEx.cs index aff485f..3c3984d 100644 --- a/Pilz.UI.Telerik/Controls/RadValidationProvider/RadValidationProviderEx.cs +++ b/Pilz.UI.Telerik/Controls/RadValidationProvider/RadValidationProviderEx.cs @@ -44,6 +44,8 @@ public class RadValidationProviderEx : Component, ISupportInitialize, IExtenderP #region Properties + public bool AllowCancelControlEvents { get; set; } = true; + /// /// Occurs before a RadControl is being validated. /// @@ -370,9 +372,8 @@ public class RadValidationProviderEx : Component, ISupportInitialize, IExtenderP var node = DataUtils.Parse(ruleToEvaluete.Expression, ruleToEvaluete.CaseSensitive); var result = node.Eval(null, context); - if (result is bool) + if (result is bool boolResult) { - var boolResult = (bool)result; var validationEventArgs = FireValidationEvent(!boolResult, (RadControl)sender, ruleToEvaluete); if (validationEventArgs.DisplayIconAndToolTip) boolResult = AddOrRemoveImage(validationEventArgs, (RadControl)sender, ruleToEvaluete); @@ -381,8 +382,7 @@ public class RadValidationProviderEx : Component, ISupportInitialize, IExtenderP boolResult = validationEventArgs.IsValid; } - var cancelEventArgs = e as CancelEventArgs; - if (cancelEventArgs != null) + if (AllowCancelControlEvents && e is CancelEventArgs cancelEventArgs) cancelEventArgs.Cancel = !boolResult; if (!boolResult) diff --git a/Pilz.UI.Telerik/Dialogs/RadFlyoutBase.cs b/Pilz.UI.Telerik/Dialogs/RadFlyoutBase.cs index b0f05ba..6dd1af7 100644 --- a/Pilz.UI.Telerik/Dialogs/RadFlyoutBase.cs +++ b/Pilz.UI.Telerik/Dialogs/RadFlyoutBase.cs @@ -20,7 +20,10 @@ public partial class RadFlyoutBase : UserControl public static RadSvgImage? ConfirmSvg { get; set; } = null; [Browsable(false)] - public RadValidationProviderEx ValidationProvider { get; } = new(); + public RadValidationProviderEx ValidationProvider { get; } = new() + { + AllowCancelControlEvents = false, + }; [ReadOnly(true)] public DialogResult Result { get; protected set; }