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)