diff --git a/SunnyUI/Controls/UITabControl.cs b/SunnyUI/Controls/UITabControl.cs index 7eefde51..b46742bb 100644 --- a/SunnyUI/Controls/UITabControl.cs +++ b/SunnyUI/Controls/UITabControl.cs @@ -261,9 +261,12 @@ namespace Sunny.UI public void AddPage(UIPage page) { Helper.AddPage(page); - Frame?.DealPageAdded(page); + PageAdded?.Invoke(this, new UIPageEventArgs(page)); } + internal event OnUIPageChanged PageAdded; + internal event OnUIPageChanged PageRemoved; + public void AddPage(int pageIndex, UITabControl page) => Helper.AddPage(pageIndex, page); public void AddPage(int pageIndex, UITabControlMenu page) => Helper.AddPage(pageIndex, page); @@ -850,7 +853,7 @@ namespace Sunny.UI { if (AutoClosePage) { - Frame?.DealPageRemoved(pages[i]); + PageRemoved?.Invoke(this, new UIPageEventArgs(pages[i])); try { diff --git a/SunnyUI/Forms/UIForm.cs b/SunnyUI/Forms/UIForm.cs index bd0a50c5..424261f6 100644 --- a/SunnyUI/Forms/UIForm.cs +++ b/SunnyUI/Forms/UIForm.cs @@ -2115,6 +2115,9 @@ namespace Sunny.UI { mainTabControl = value; mainTabControl.Frame = this; + + mainTabControl.PageAdded += DealPageAdded; + mainTabControl.PageRemoved += DealPageRemoved; } } @@ -2141,6 +2144,7 @@ namespace Sunny.UI page.Frame = this; page.OnFrameDealPageParams += Page_OnFrameDealPageParams; + page.PageSelected += DealPageSelected; MainTabControl?.AddPage(page); return page; } @@ -2246,21 +2250,21 @@ namespace Sunny.UI public event OnUIPageChanged PageAdded; - public void DealPageAdded(UIPage page) + internal void DealPageAdded(object sender, UIPageEventArgs e) { - PageAdded?.Invoke(this, new UIPageEventArgs(page)); + PageAdded?.Invoke(this, e); } public event OnUIPageChanged PageSelected; - public void DealPageSelected(UIPage page) + internal void DealPageSelected(object sender, UIPageEventArgs e) { - PageSelected?.Invoke(this, new UIPageEventArgs(page)); + PageSelected?.Invoke(this, e); } public event OnUIPageChanged PageRemoved; - public void DealPageRemoved(UIPage page) + internal void DealPageRemoved(object sender, UIPageEventArgs e) { - PageRemoved?.Invoke(this, new UIPageEventArgs(page)); + PageRemoved?.Invoke(this, e); } #endregion IFrame实现 diff --git a/SunnyUI/Frames/IFrame.cs b/SunnyUI/Frames/IFrame.cs index 46b5fa08..fcc8f492 100644 --- a/SunnyUI/Frames/IFrame.cs +++ b/SunnyUI/Frames/IFrame.cs @@ -59,12 +59,6 @@ namespace Sunny.UI T GetPage() where T : UIPage; List GetPages() where T : UIPage; - - void DealPageAdded(UIPage page); - - void DealPageSelected(UIPage page); - - void DealPageRemoved(UIPage page); } public class UIPageParamsArgs : EventArgs diff --git a/SunnyUI/Frames/UIPage.cs b/SunnyUI/Frames/UIPage.cs index 49070657..a0572152 100644 --- a/SunnyUI/Frames/UIPage.cs +++ b/SunnyUI/Frames/UIPage.cs @@ -455,10 +455,11 @@ namespace Sunny.UI get; set; } + internal event OnUIPageChanged PageSelected; public virtual void Init() { Initialize?.Invoke(this, new EventArgs()); - Frame?.DealPageSelected(this); + PageSelected?.Invoke(this, new UIPageEventArgs(this)); } protected override void OnLoad(EventArgs e)