diff --git a/SunnyUI/Controls/Color/UIColorWheel.cs b/SunnyUI/Controls/Color/UIColorWheel.cs index 266b484e..52be5562 100644 --- a/SunnyUI/Controls/Color/UIColorWheel.cs +++ b/SunnyUI/Controls/Color/UIColorWheel.cs @@ -43,7 +43,7 @@ namespace Sunny.UI /// /// 控件缩放前在其容器里的位置 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/Color/UILabelRotate.cs b/SunnyUI/Controls/Color/UILabelRotate.cs index ee1eb8ae..0e18325a 100644 --- a/SunnyUI/Controls/Color/UILabelRotate.cs +++ b/SunnyUI/Controls/Color/UILabelRotate.cs @@ -21,7 +21,7 @@ namespace Sunny.UI /// /// 控件缩放前在其容器里的位置 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIContextMenuStrip.cs b/SunnyUI/Controls/UIContextMenuStrip.cs index bcbe07d0..7b703f25 100644 --- a/SunnyUI/Controls/UIContextMenuStrip.cs +++ b/SunnyUI/Controls/UIContextMenuStrip.cs @@ -51,7 +51,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIControl.cs b/SunnyUI/Controls/UIControl.cs index 97142e7f..d9e03d16 100644 --- a/SunnyUI/Controls/UIControl.cs +++ b/SunnyUI/Controls/UIControl.cs @@ -63,7 +63,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIDataGridView.cs b/SunnyUI/Controls/UIDataGridView.cs index 4b38ba45..3cdb1da1 100644 --- a/SunnyUI/Controls/UIDataGridView.cs +++ b/SunnyUI/Controls/UIDataGridView.cs @@ -151,7 +151,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIImageButton.cs b/SunnyUI/Controls/UIImageButton.cs index 705a086c..51b125f2 100644 --- a/SunnyUI/Controls/UIImageButton.cs +++ b/SunnyUI/Controls/UIImageButton.cs @@ -53,7 +53,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIKnobControl.cs b/SunnyUI/Controls/UIKnobControl.cs index 1fe2159f..314ae016 100644 --- a/SunnyUI/Controls/UIKnobControl.cs +++ b/SunnyUI/Controls/UIKnobControl.cs @@ -1394,7 +1394,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UILabel.cs b/SunnyUI/Controls/UILabel.cs index e837cb4d..19f4d74b 100644 --- a/SunnyUI/Controls/UILabel.cs +++ b/SunnyUI/Controls/UILabel.cs @@ -51,7 +51,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// @@ -201,7 +201,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UILedBulb.cs b/SunnyUI/Controls/UILedBulb.cs index b76ccec2..c37173bf 100644 --- a/SunnyUI/Controls/UILedBulb.cs +++ b/SunnyUI/Controls/UILedBulb.cs @@ -53,7 +53,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UINavBar.cs b/SunnyUI/Controls/UINavBar.cs index e7fd669e..6e106078 100644 --- a/SunnyUI/Controls/UINavBar.cs +++ b/SunnyUI/Controls/UINavBar.cs @@ -75,7 +75,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UINavMenu.cs b/SunnyUI/Controls/UINavMenu.cs index a191ce6b..8ded24ae 100644 --- a/SunnyUI/Controls/UINavMenu.cs +++ b/SunnyUI/Controls/UINavMenu.cs @@ -130,7 +130,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UINavMenuHelper.cs b/SunnyUI/Controls/UINavMenuHelper.cs index 64c1d792..7527da86 100644 --- a/SunnyUI/Controls/UINavMenuHelper.cs +++ b/SunnyUI/Controls/UINavMenuHelper.cs @@ -358,6 +358,13 @@ namespace Sunny.UI return false; } + List pages = tabControl.SelectedTab.GetControls(); + if (pages.Count == 1) + { + bool isCancel = pages[0].OnPageDeselecting(); + if (isCancel) return false; + } + foreach (var item in PageItems) { if (item.Value.PageIndex == pageIndex && item.Key != null) @@ -380,6 +387,13 @@ namespace Sunny.UI return false; } + List pages = tabControl.SelectedTab.GetControls(); + if (pages.Count == 1) + { + bool isCancel = pages[0].OnPageDeselecting(); + if (isCancel) return false; + } + foreach (var item in PageItems) { if (item.Value.PageGuid == guid && item.Key != null) diff --git a/SunnyUI/Controls/UISmoothLabel.cs b/SunnyUI/Controls/UISmoothLabel.cs index 1f76dfc2..87234e4d 100644 --- a/SunnyUI/Controls/UISmoothLabel.cs +++ b/SunnyUI/Controls/UISmoothLabel.cs @@ -57,7 +57,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UISplitContainer.cs b/SunnyUI/Controls/UISplitContainer.cs index dec103c8..c91280f8 100644 --- a/SunnyUI/Controls/UISplitContainer.cs +++ b/SunnyUI/Controls/UISplitContainer.cs @@ -91,7 +91,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UITabControl.cs b/SunnyUI/Controls/UITabControl.cs index 6e7389c8..07866f9d 100644 --- a/SunnyUI/Controls/UITabControl.cs +++ b/SunnyUI/Controls/UITabControl.cs @@ -77,7 +77,7 @@ namespace Sunny.UI _fillColor = UIStyles.Blue.TabControlBackColor; } - [Browsable(false)] + [Browsable(false), DefaultValue(null)] public IFrame Frame { get; set; @@ -92,7 +92,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UITabControlMenu.cs b/SunnyUI/Controls/UITabControlMenu.cs index d3efc495..17eddd28 100644 --- a/SunnyUI/Controls/UITabControlMenu.cs +++ b/SunnyUI/Controls/UITabControlMenu.cs @@ -71,7 +71,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIUserControl.cs b/SunnyUI/Controls/UIUserControl.cs index 771c5823..362cb46c 100644 --- a/SunnyUI/Controls/UIUserControl.cs +++ b/SunnyUI/Controls/UIUserControl.cs @@ -62,7 +62,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Controls/UIValve.cs b/SunnyUI/Controls/UIValve.cs index 58d3359c..7bb919a2 100644 --- a/SunnyUI/Controls/UIValve.cs +++ b/SunnyUI/Controls/UIValve.cs @@ -53,7 +53,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Forms/UIForm.cs b/SunnyUI/Forms/UIForm.cs index f9742567..8b627876 100644 --- a/SunnyUI/Forms/UIForm.cs +++ b/SunnyUI/Forms/UIForm.cs @@ -173,7 +173,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } /// diff --git a/SunnyUI/Forms/UIFormHelper.cs b/SunnyUI/Forms/UIFormHelper.cs index 17d19b91..afaa8c39 100644 --- a/SunnyUI/Forms/UIFormHelper.cs +++ b/SunnyUI/Forms/UIFormHelper.cs @@ -26,6 +26,7 @@ using System; using System.Collections; +using System.ComponentModel; using System.Drawing; using System.Windows.Forms; @@ -50,6 +51,20 @@ namespace Sunny.UI } } + public class PageDeselectingEventArgs : CancelEventArgs + { + private string _cancelReason; + + public PageDeselectingEventArgs(bool cancel, string cancelReason) : base(cancel) + { + _cancelReason = cancelReason; + } + + public string CancelReason => _cancelReason; + } + + public delegate void PageDeselectingEventHandler(object sender, PageDeselectingEventArgs e); + public delegate void OnUIPageChanged(object sender, UIPageEventArgs e); public static class UIMessageDialog diff --git a/SunnyUI/Frames/UIPage.cs b/SunnyUI/Frames/UIPage.cs index 33079943..1bc3fff7 100644 --- a/SunnyUI/Frames/UIPage.cs +++ b/SunnyUI/Frames/UIPage.cs @@ -33,6 +33,7 @@ * 2022-08-25: V3.2.3 閲嶆瀯澶氶〉闈㈡鏋朵紶鍊硷細椤甸潰鍙戦佺粰妗嗘灦 SendParamToPage 鍑芥暟 * 2022-08-25: V3.2.3 閲嶆瀯澶氶〉闈㈡鏋朵紶鍊硷細鎺ユ敹妗嗘灦銆侀〉闈紶鍊 ReceiveParams 浜嬩欢 * 2022-10-28: V3.2.6 鏍囬鏍忓鍔犳墿灞曟寜閽 + * 2023-02-24: V3.3.2 澧炲姞PageDeselecting锛屽彇娑堥〉闈㈤夋嫨鏃跺鍔犲垽鏂 ******************************************************************************/ using System; @@ -107,6 +108,15 @@ namespace Sunny.UI base.SizeGripStyle = SizeGripStyle.Hide; } + public event PageDeselectingEventHandler PageDeselecting; + + internal bool OnPageDeselecting() + { + PageDeselectingEventArgs e = new PageDeselectingEventArgs(false, string.Empty); + PageDeselecting?.Invoke(this, e); + return e.Cancel; + } + [Browsable(false)] public new IButtonControl AcceptButton { @@ -235,7 +245,7 @@ namespace Sunny.UI /// /// 鎺т欢缂╂斁鍓嶅湪鍏跺鍣ㄩ噷鐨勪綅缃 /// - [Browsable(false)] + [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")] public Rectangle ZoomScaleRect { get; set; } ///