* UIForm: 多页面框架增加PageAdded,PageSelected,PageRemoved事件
This commit is contained in:
parent
cab4b45ad7
commit
1a2acc5a19
@ -77,6 +77,12 @@ namespace Sunny.UI
|
||||
_fillColor = UIStyles.Blue.TabControlBackColor;
|
||||
}
|
||||
|
||||
[Browsable(false)]
|
||||
public IFrame Frame
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 禁止控件跟随窗体缩放
|
||||
/// </summary>
|
||||
@ -235,8 +241,6 @@ namespace Sunny.UI
|
||||
|
||||
public bool SelectPage(Guid pageGuid) => Helper.SelectPage(pageGuid);
|
||||
|
||||
public void AddPage(UIPage page) => Helper.AddPage(page);
|
||||
|
||||
public bool RemovePage(int pageIndex) => Helper.RemovePage(pageIndex);
|
||||
|
||||
public bool RemovePage(Guid guid) => Helper.RemovePage(guid);
|
||||
@ -254,6 +258,12 @@ namespace Sunny.UI
|
||||
foreach (var page in pages) AddPage(page);
|
||||
}
|
||||
|
||||
public void AddPage(UIPage page)
|
||||
{
|
||||
Helper.AddPage(page);
|
||||
Frame?.DealPageAdded(page);
|
||||
}
|
||||
|
||||
public void AddPage(int pageIndex, UITabControl page) => Helper.AddPage(pageIndex, page);
|
||||
|
||||
public void AddPage(int pageIndex, UITabControlMenu page) => Helper.AddPage(pageIndex, page);
|
||||
@ -840,10 +850,17 @@ namespace Sunny.UI
|
||||
{
|
||||
if (AutoClosePage)
|
||||
{
|
||||
pages[i].Final();
|
||||
pages[i].Close();
|
||||
pages[i].Dispose();
|
||||
pages[i] = null;
|
||||
Frame.DealPageRemoved(pages[i]);
|
||||
|
||||
try
|
||||
{
|
||||
pages[i].Final();
|
||||
pages[i].Close();
|
||||
pages[i].Dispose();
|
||||
pages[i] = null;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -35,6 +35,7 @@
|
||||
* 2022-04-26: V3.1.8 屏蔽一些属性
|
||||
* 2022-05-06: V3.1.8 可拖拽时Padding可以调整大小
|
||||
* 2022-06-11: V3.1.9 弹窗默认关闭半透明遮罩
|
||||
* 2022-07-05: V3.2.1 多页面框架增加PageAdded,PageSelected,PageRemoved事件
|
||||
******************************************************************************/
|
||||
|
||||
using System;
|
||||
@ -2072,7 +2073,18 @@ namespace Sunny.UI
|
||||
|
||||
#region IFrame实现
|
||||
|
||||
public UITabControl MainTabControl { get; set; }
|
||||
private UITabControl mainTabControl;
|
||||
|
||||
[DefaultValue(null)]
|
||||
public UITabControl MainTabControl
|
||||
{
|
||||
get => mainTabControl;
|
||||
set
|
||||
{
|
||||
mainTabControl = value;
|
||||
mainTabControl.Frame = this;
|
||||
}
|
||||
}
|
||||
|
||||
public UIPage AddPage(UIPage page, int index)
|
||||
{
|
||||
@ -2089,6 +2101,12 @@ namespace Sunny.UI
|
||||
public UIPage AddPage(UIPage page)
|
||||
{
|
||||
SetDefaultTabControl();
|
||||
|
||||
if (MainTabControl == null)
|
||||
{
|
||||
throw (new ApplicationException("未指定MainTabControl,无法承载多页面。"));
|
||||
}
|
||||
|
||||
page.Frame = this;
|
||||
MainTabControl?.AddPage(page);
|
||||
return page;
|
||||
@ -2168,6 +2186,25 @@ namespace Sunny.UI
|
||||
|
||||
public List<T> GetPages<T>() where T : UIPage => SetDefaultTabControl().MainTabControl?.GetPages<T>();
|
||||
|
||||
public event OnUIPageChanged PageAdded;
|
||||
|
||||
public void DealPageAdded(UIPage page)
|
||||
{
|
||||
PageAdded?.Invoke(this, new UIPageEventArgs(page));
|
||||
}
|
||||
|
||||
public event OnUIPageChanged PageSelected;
|
||||
public void DealPageSelected(UIPage page)
|
||||
{
|
||||
PageSelected?.Invoke(this, new UIPageEventArgs(page));
|
||||
}
|
||||
|
||||
public event OnUIPageChanged PageRemoved;
|
||||
public void DealPageRemoved(UIPage page)
|
||||
{
|
||||
PageRemoved?.Invoke(this, new UIPageEventArgs(page));
|
||||
}
|
||||
|
||||
#endregion IFrame实现
|
||||
}
|
||||
}
|
@ -34,6 +34,23 @@ namespace Sunny.UI
|
||||
|
||||
public delegate void OnZoomScaleRectChanged(object sender, Rectangle info);
|
||||
|
||||
public class UIPageEventArgs : EventArgs
|
||||
{
|
||||
public UIPage Page { get; set; }
|
||||
|
||||
public UIPageEventArgs()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public UIPageEventArgs(UIPage page)
|
||||
{
|
||||
Page = page;
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void OnUIPageChanged(object sender, UIPageEventArgs e);
|
||||
|
||||
public static class UIMessageDialog
|
||||
{
|
||||
/// <summary>
|
||||
|
@ -65,5 +65,9 @@ namespace Sunny.UI
|
||||
T GetPage<T>() where T : UIPage;
|
||||
|
||||
List<T> GetPages<T>() where T : UIPage;
|
||||
|
||||
void DealPageAdded(UIPage page);
|
||||
void DealPageSelected(UIPage page);
|
||||
void DealPageRemoved(UIPage page);
|
||||
}
|
||||
}
|
||||
|
@ -454,6 +454,7 @@ namespace Sunny.UI
|
||||
public virtual void Init()
|
||||
{
|
||||
Initialize?.Invoke(this, new EventArgs());
|
||||
Frame.DealPageSelected(this);
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
|
Loading…
x
Reference in New Issue
Block a user