From 15b67be54a90badabdf7be200e99c3a01c279bf4 Mon Sep 17 00:00:00 2001 From: Sunny Date: Thu, 25 Aug 2022 23:25:33 +0800 Subject: [PATCH] =?UTF-8?q?*=20=E9=87=8D=E6=9E=84=E5=A4=9A=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=A1=86=E6=9E=B6=E4=BC=A0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI/Controls/UIGlobal.cs | 29 --------------------------- SunnyUI/Forms/UIForm.cs | 33 ++++++++++++++++++------------ SunnyUI/Frames/IFrame.cs | 39 +++++++++++++++++++++++++++++++++--- SunnyUI/Frames/UIPage.cs | 22 ++++++++++---------- 4 files changed, 67 insertions(+), 56 deletions(-) diff --git a/SunnyUI/Controls/UIGlobal.cs b/SunnyUI/Controls/UIGlobal.cs index 1c3e1456..2c525519 100644 --- a/SunnyUI/Controls/UIGlobal.cs +++ b/SunnyUI/Controls/UIGlobal.cs @@ -62,33 +62,4 @@ namespace Sunny.UI public delegate void OnSelectionChanged(object sender, UITextBoxSelectionArgs e); public delegate void OnDateTimeChanged(object sender, UIDateTimeArgs e); - - public class UIPageParamsArgs : EventArgs - { - public UIPage Page { get; set; } - - public object Value { get; set; } - - public UIParamSourceType SourceType { get; set; } - - public UIPageParamsArgs() - { - - } - - public UIPageParamsArgs(UIPage page, object value, UIParamSourceType sourceType) - { - Page = page; - Value = value; - SourceType = sourceType; - } - } - - public enum UIParamSourceType - { - Frame, - Page - } - - public delegate bool OnReceiveParams(object sender, UIPageParamsArgs e); } \ No newline at end of file diff --git a/SunnyUI/Forms/UIForm.cs b/SunnyUI/Forms/UIForm.cs index ac34f691..544b3879 100644 --- a/SunnyUI/Forms/UIForm.cs +++ b/SunnyUI/Forms/UIForm.cs @@ -2196,36 +2196,43 @@ namespace Sunny.UI public bool ExistPage(Guid pageGuid) => GetPage(pageGuid) != null; - public bool SendParamToPage(int pageIndex, UIPage sourcePage, object value) + public bool SendParamToPage(int pageIndex, UIPageParamsArgs e) { SetDefaultTabControl(); UIPage page = GetPage(pageIndex); - if (page == null) return false; - return page.DoReceiveParams(new UIPageParamsArgs(sourcePage, value, UIParamSourceType.Page)); + page?.DoReceiveParams(e); + return e.Handled; } - public bool SendParamToPage(Guid pageGuid, UIPage sourcePage, object value) + public bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e) { SetDefaultTabControl(); UIPage page = GetPage(pageGuid); - if (page == null) return false; - return page.DoReceiveParams(new UIPageParamsArgs(sourcePage, value, UIParamSourceType.Page)); + page?.DoReceiveParams(e); + return e.Handled; } public bool SendParamToPage(int pageIndex, object value) { SetDefaultTabControl(); UIPage page = GetPage(pageIndex); - if (page == null) return false; - return page.DoReceiveParams(new UIPageParamsArgs(null, value, UIParamSourceType.Frame)); + var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame); + page?.DoReceiveParams(args); + return args.Handled; } - public bool DoReceiveParams(UIPageParamsArgs e) + public bool SendParamToPage(Guid pageGuid, object value) { - bool result = false; - if (ReceiveParams != null) - result = ReceiveParams.Invoke(this, e); - return result; + SetDefaultTabControl(); + UIPage page = GetPage(pageGuid); + var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame); + page?.DoReceiveParams(args); + return args.Handled; + } + + public void DoReceiveParams(UIPageParamsArgs e) + { + ReceiveParams?.Invoke(this, e); } public event OnReceiveParams ReceiveParams; diff --git a/SunnyUI/Frames/IFrame.cs b/SunnyUI/Frames/IFrame.cs index f1aa68be..df2f72f3 100644 --- a/SunnyUI/Frames/IFrame.cs +++ b/SunnyUI/Frames/IFrame.cs @@ -52,11 +52,11 @@ namespace Sunny.UI bool ExistPage(Guid pageGuid); - public bool SendParamToPage(int pageIndex, UIPage sourcePage, object value); + bool SendParamToPage(int pageIndex, UIPageParamsArgs e); - public bool SendParamToPage(Guid pageGuid, UIPage sourcePage, object value); + bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e); - public bool DoReceiveParams(UIPageParamsArgs e); + void DoReceiveParams(UIPageParamsArgs e); void Init(); @@ -67,7 +67,40 @@ namespace Sunny.UI List GetPages() where T : UIPage; void DealPageAdded(UIPage page); + void DealPageSelected(UIPage page); + void DealPageRemoved(UIPage page); } + + public class UIPageParamsArgs : EventArgs + { + public UIPage Page { get; set; } + + public object Value { get; set; } + + public UIParamSourceType SourceType { get; set; } + + public bool Handled { get; set; } = false; + + public UIPageParamsArgs() + { + + } + + public UIPageParamsArgs(UIPage page, object value, UIParamSourceType sourceType) + { + Page = page; + Value = value; + SourceType = sourceType; + } + } + + public enum UIParamSourceType + { + Frame, + Page + } + + public delegate void OnReceiveParams(object sender, UIPageParamsArgs e); } diff --git a/SunnyUI/Frames/UIPage.cs b/SunnyUI/Frames/UIPage.cs index ce97e3c8..bca2821c 100644 --- a/SunnyUI/Frames/UIPage.cs +++ b/SunnyUI/Frames/UIPage.cs @@ -834,28 +834,28 @@ namespace Sunny.UI public bool SendParamToFrame(object value) { - if (Frame == null) return false; - return Frame.DoReceiveParams(new UIPageParamsArgs(this, value, UIParamSourceType.Page)); + var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page); + Frame?.DoReceiveParams(args); + return args.Handled; } public bool SendParamToPage(int pageIndex, object value) { - if (Frame == null) return false; - return Frame.SendParamToPage(pageIndex, this, value); + var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page); + Frame?.SendParamToPage(pageIndex, args); + return args.Handled; } public bool SendParamToPage(Guid pageGuid, object value) { - if (Frame == null) return false; - return Frame.SendParamToPage(pageGuid, this, value); + var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page); + Frame?.SendParamToPage(pageGuid, args); + return args.Handled; } - public bool DoReceiveParams(UIPageParamsArgs e) + public void DoReceiveParams(UIPageParamsArgs e) { - bool result = false; - if (ReceiveParams != null) - result = ReceiveParams.Invoke(this, e); - return result; + ReceiveParams?.Invoke(this, e); } public event OnReceiveParams ReceiveParams;