* UIForm: 修复PageSelected可能未显示选中页面的问题

This commit is contained in:
Sunny 2023-02-24 15:05:40 +08:00
parent 0c066ff6dc
commit d448cc9cc0
3 changed files with 24 additions and 9 deletions

View File

@ -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<UIPage> pages = e.TabPage.GetControls<UIPage>();
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)
{

View File

@ -59,6 +59,8 @@ namespace Sunny.UI
T GetPage<T>() where T : UIPage;
List<T> GetPages<T>() where T : UIPage;
UIPage SelectedPage { get; }
}
public class UIPageParamsArgs : EventArgs

View File

@ -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)