From ec7d24e8e067e1e0925d04b7f6075d964347e5a7 Mon Sep 17 00:00:00 2001 From: Sunny Date: Tue, 30 Aug 2022 10:59:54 +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/Forms/UIForm.cs | 43 +++++++++++++++++++++------------------- SunnyUI/Frames/IFrame.cs | 24 ++++++---------------- SunnyUI/Frames/UIPage.cs | 28 +++++++++++++++++++------- 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/SunnyUI/Forms/UIForm.cs b/SunnyUI/Forms/UIForm.cs index d8eb6c1e..bd0a50c5 100644 --- a/SunnyUI/Forms/UIForm.cs +++ b/SunnyUI/Forms/UIForm.cs @@ -2140,6 +2140,7 @@ namespace Sunny.UI } page.Frame = this; + page.OnFrameDealPageParams += Page_OnFrameDealPageParams; MainTabControl?.AddPage(page); return page; } @@ -2196,27 +2197,16 @@ namespace Sunny.UI public bool ExistPage(Guid pageGuid) => GetPage(pageGuid) != null; - public bool SendParamToPage(int pageIndex, UIPageParamsArgs e) - { - SetDefaultTabControl(); - UIPage page = GetPage(pageIndex); - page?.DealReceiveParams(e); - return e.Handled; - } - - public bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e) - { - SetDefaultTabControl(); - UIPage page = GetPage(pageGuid); - page?.DealReceiveParams(e); - return e.Handled; - } - public bool SendParamToPage(int pageIndex, object value) { SetDefaultTabControl(); UIPage page = GetPage(pageIndex); - var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame); + if (page == null) + { + throw new NullReferenceException("未能查找到页面的索引为: " + pageIndex); + } + + var args = new UIPageParamsArgs(null, page, value); page?.DealReceiveParams(args); return args.Handled; } @@ -2225,14 +2215,27 @@ namespace Sunny.UI { SetDefaultTabControl(); UIPage page = GetPage(pageGuid); - var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame); + if (page == null) + { + throw new NullReferenceException("未能查找到页面的索引为: " + pageGuid); + } + + var args = new UIPageParamsArgs(null, page, value); page?.DealReceiveParams(args); return args.Handled; } - public virtual void DealReceiveParams(UIPageParamsArgs e) + private void Page_OnFrameDealPageParams(object sender, UIPageParamsArgs e) { - ReceiveParams?.Invoke(this, e); + if (e == null) return; + if (e.DestPage == null) + { + ReceiveParams?.Invoke(this, e); + } + else + { + e.DestPage?.DealReceiveParams(e); + } } public event OnReceiveParams ReceiveParams; diff --git a/SunnyUI/Frames/IFrame.cs b/SunnyUI/Frames/IFrame.cs index 7bf96cfc..46b5fa08 100644 --- a/SunnyUI/Frames/IFrame.cs +++ b/SunnyUI/Frames/IFrame.cs @@ -52,12 +52,6 @@ namespace Sunny.UI bool ExistPage(Guid pageGuid); - bool SendParamToPage(int pageIndex, UIPageParamsArgs e); - - bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e); - - void DealReceiveParams(UIPageParamsArgs e); - void Init(); void Final(); @@ -75,12 +69,12 @@ namespace Sunny.UI public class UIPageParamsArgs : EventArgs { - public UIPage Page { get; set; } + public UIPage SourcePage { get; set; } + + public UIPage DestPage { get; set; } public object Value { get; set; } - public UIParamSourceType SourceType { get; set; } - public bool Handled { get; set; } = false; public UIPageParamsArgs() @@ -88,19 +82,13 @@ namespace Sunny.UI } - public UIPageParamsArgs(UIPage page, object value, UIParamSourceType sourceType) + public UIPageParamsArgs(UIPage sourcePage, UIPage destPage, object value) { - Page = page; + SourcePage = sourcePage; + DestPage = destPage; 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 269c9119..49070657 100644 --- a/SunnyUI/Frames/UIPage.cs +++ b/SunnyUI/Frames/UIPage.cs @@ -832,28 +832,42 @@ namespace Sunny.UI get; set; } + internal event OnReceiveParams OnFrameDealPageParams; + public bool SendParamToFrame(object value) { - var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page); - Frame?.DealReceiveParams(args); + var args = new UIPageParamsArgs(this, null, value); + OnFrameDealPageParams?.Invoke(this, args); return args.Handled; } public bool SendParamToPage(int pageIndex, object value) { - var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page); - Frame?.SendParamToPage(pageIndex, args); + UIPage page = Frame.GetPage(pageIndex); + if (page == null) + { + throw new NullReferenceException("未能查找到页面的索引为: " + pageIndex); + } + + var args = new UIPageParamsArgs(this, page, value); + OnFrameDealPageParams?.Invoke(this, args); return args.Handled; } public bool SendParamToPage(Guid pageGuid, object value) { - var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page); - Frame?.SendParamToPage(pageGuid, args); + UIPage page = Frame.GetPage(pageGuid); + if (page == null) + { + throw new NullReferenceException("未能查找到页面的索引为: " + pageGuid); + } + + var args = new UIPageParamsArgs(this, page, value); + OnFrameDealPageParams?.Invoke(this, args); return args.Handled; } - public virtual void DealReceiveParams(UIPageParamsArgs e) + internal void DealReceiveParams(UIPageParamsArgs e) { ReceiveParams?.Invoke(this, e); }