From d448cc9cc055c25824ceab04bb6123d73c6c4b25 Mon Sep 17 00:00:00 2001 From: Sunny Date: Fri, 24 Feb 2023 15:05:40 +0800 Subject: [PATCH] =?UTF-8?q?*=20UIForm:=20=E4=BF=AE=E5=A4=8DPageSelected?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E6=9C=AA=E6=98=BE=E7=A4=BA=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI/Forms/UIForm.cs | 29 ++++++++++++++++++++++------- SunnyUI/Frames/IFrame.cs | 2 ++ SunnyUI/Frames/UIPage.cs | 2 -- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/SunnyUI/Forms/UIForm.cs b/SunnyUI/Forms/UIForm.cs index e8b44b41..f9742567 100644 --- a/SunnyUI/Forms/UIForm.cs +++ b/SunnyUI/Forms/UIForm.cs @@ -44,6 +44,7 @@ * 2022-09-11: V3.2.3 修复继承页面可响应WM_HOTKEY消息 * 2022-11-30: V3.3.0 增加RemoveAllPages函数 * 2023-01-25: V3.3.1 最大化后,关闭按钮扩大至原按钮右上角全部区域 + * 2023-02-24: V3.3.2 修复PageSelected可能未显示选中页面的问题 ******************************************************************************/ using System; @@ -2161,9 +2162,30 @@ namespace Sunny.UI mainTabControl.PageAdded += DealPageAdded; mainTabControl.PageRemoved += DealPageRemoved; + mainTabControl.Selecting += MainTabControl_Selecting; } } + private void MainTabControl_Selecting(object sender, TabControlCancelEventArgs e) + { + List pages = e.TabPage.GetControls(); + if (pages.Count == 1) + { + SelectedPage = pages[0]; + PageSelected?.Invoke(this, new UIPageEventArgs(SelectedPage)); + } + else + { + SelectedPage = null; + PageSelected?.Invoke(this, new UIPageEventArgs(SelectedPage)); + } + } + + [Browsable(false)] + public UIPage SelectedPage { get; private set; } + + public event OnUIPageChanged PageSelected; + public UIPage AddPage(UIPage page, int pageIndex) { page.PageIndex = pageIndex; @@ -2187,7 +2209,6 @@ namespace Sunny.UI page.Frame = this; page.OnFrameDealPageParams += Page_OnFrameDealPageParams; - page.PageSelected += DealPageSelected; MainTabControl?.AddPage(page); return page; } @@ -2300,12 +2321,6 @@ namespace Sunny.UI PageAdded?.Invoke(this, e); } - public event OnUIPageChanged PageSelected; - internal void DealPageSelected(object sender, UIPageEventArgs e) - { - PageSelected?.Invoke(this, e); - } - public event OnUIPageChanged PageRemoved; internal void DealPageRemoved(object sender, UIPageEventArgs e) { diff --git a/SunnyUI/Frames/IFrame.cs b/SunnyUI/Frames/IFrame.cs index fb38c2ac..81900a84 100644 --- a/SunnyUI/Frames/IFrame.cs +++ b/SunnyUI/Frames/IFrame.cs @@ -59,6 +59,8 @@ namespace Sunny.UI T GetPage() where T : UIPage; List GetPages() where T : UIPage; + + UIPage SelectedPage { get; } } public class UIPageParamsArgs : EventArgs diff --git a/SunnyUI/Frames/UIPage.cs b/SunnyUI/Frames/UIPage.cs index b3999356..33079943 100644 --- a/SunnyUI/Frames/UIPage.cs +++ b/SunnyUI/Frames/UIPage.cs @@ -474,11 +474,9 @@ namespace Sunny.UI get; set; } - internal event OnUIPageChanged PageSelected; public virtual void Init() { Initialize?.Invoke(this, new EventArgs()); - PageSelected?.Invoke(this, new UIPageEventArgs(this)); } protected override void OnLoad(EventArgs e)