* UINavBar, UINavMenu: 重构扩展函数

This commit is contained in:
Sunny 2022-04-14 17:18:45 +08:00
parent a42cd389fc
commit 8beb5042ca
5 changed files with 179 additions and 255 deletions

View File

@ -592,11 +592,15 @@ namespace Sunny.UI
/// 是否显示表格线
/// </summary>
[Description("是否显示表格线"), Category("SunnyUI")]
[DefaultValue(false)]
[DefaultValue(true)]
public bool ShowGridLine
{
get => CellBorderStyle == DataGridViewCellBorderStyle.Single;
set => CellBorderStyle = value ? DataGridViewCellBorderStyle.Single : DataGridViewCellBorderStyle.None;
set
{
CellBorderStyle = value ? DataGridViewCellBorderStyle.Single : DataGridViewCellBorderStyle.None;
VBar.ShowLeftLine = value;
}
}
private Color _rectColor = UIColor.Blue;

View File

@ -22,6 +22,7 @@
* 2021-06-08: V3.0.4
* 2021-08-07: V3.0.5 /
* 2022-03-19: V3.1.1
* 2022-04-14: V3.1.3
******************************************************************************/
using System;
@ -133,31 +134,6 @@ namespace Sunny.UI
[Description("关联的TabControl"), Category("SunnyUI")]
public UITabControl TabControl { get; set; }
public void SetNodeItem(TreeNode node, NavMenuItem item)
{
MenuHelper.Add(node, item);
}
public void SetNodePageIndex(TreeNode node, int pageIndex)
{
MenuHelper.SetPageIndex(node, pageIndex);
}
public int GetPageIndex(TreeNode node)
{
return MenuHelper.GetPageIndex(node);
}
public void SetNodeSymbol(TreeNode node, int symbol, int symbolSize = 24)
{
MenuHelper.SetSymbol(node, symbol, symbolSize);
}
public void SetNodeImageIndex(TreeNode node, int imageIndex)
{
node.ImageIndex = imageIndex;
}
/// <summary>
/// Tag字符串
/// </summary>
@ -407,12 +383,12 @@ namespace Sunny.UI
if (Nodes.Count > 0 && value >= 0 && value < Nodes.Count)
{
selectedIndex = value;
NodeMouseClick?.Invoke(Nodes[SelectedIndex], selectedIndex, MenuHelper.GetPageIndex(Nodes[SelectedIndex]));
NodeMouseClick?.Invoke(Nodes[SelectedIndex], selectedIndex, GetPageIndex(Nodes[SelectedIndex]));
if (Nodes[value].Nodes.Count == 0)
{
MenuItemClick?.Invoke(Nodes[SelectedIndex].Text, selectedIndex, MenuHelper.GetPageIndex(Nodes[SelectedIndex]));
TabControl?.SelectPage(MenuHelper.GetPageIndex(Nodes[SelectedIndex]));
MenuItemClick?.Invoke(Nodes[SelectedIndex].Text, selectedIndex, GetPageIndex(Nodes[SelectedIndex]));
TabControl?.SelectPage(GetPageIndex(Nodes[SelectedIndex]));
}
Invalidate();
@ -692,9 +668,9 @@ namespace Sunny.UI
ToolStripMenuItem item = (ToolStripMenuItem)sender;
if (item.Tag != null && item.Tag is TreeNode node)
{
TabControl?.SelectPage(MenuHelper.GetPageIndex(node));
MenuItemClick?.Invoke(item.Text, selectedIndex, MenuHelper.GetPageIndex(node));
NodeMouseClick?.Invoke(node, selectedIndex, MenuHelper.GetPageIndex(node));
TabControl?.SelectPage(GetPageIndex(node));
MenuItemClick?.Invoke(item.Text, selectedIndex, GetPageIndex(node));
NodeMouseClick?.Invoke(node, selectedIndex, GetPageIndex(node));
}
}
@ -748,59 +724,68 @@ namespace Sunny.UI
public string Version { get; }
#region
public UINavBar SetNodePageIndex(TreeNode node, int pageIndex)
{
MenuHelper.SetPageIndex(node, pageIndex);
return this;
}
public UINavBar SetNodeSymbol(TreeNode node, int symbol, int symbolSize = 24)
{
MenuHelper.SetSymbol(node, symbol, symbolSize);
return this;
}
public UINavBar SetNodeImageIndex(TreeNode node, int imageIndex)
{
node.ImageIndex = imageIndex;
return this;
}
public TreeNode CreateNode(string text, int pageIndex)
{
return CreateNode(new NavMenuItem(text, pageIndex));
}
public TreeNode CreateNode(string text, Guid pageGuid)
{
return CreateNode(new NavMenuItem(text, pageGuid));
}
public TreeNode CreateNode(UIPage page)
{
return CreateNode(new NavMenuItem(page));
}
public TreeNode CreateNode(NavMenuItem item)
{
TreeNode node = new TreeNode(item.Text);
Nodes.Add(node);
SetNodeItem(node, item);
return node;
}
public TreeNode CreateNode(string text, int imageIndex, int pageIndex)
{
return CreateNode(new NavMenuItem(text, pageIndex), imageIndex);
}
public TreeNode CreateNode(UIPage page, int imageIndex)
{
return CreateNode(new NavMenuItem(page), imageIndex);
}
public TreeNode CreateNode(NavMenuItem item, int imageIndex)
{
TreeNode node = new TreeNode(item.Text);
Nodes.Add(node);
SetNodeItem(node, item);
node.ImageIndex = imageIndex;
return node;
}
public TreeNode CreateNode(string text, int symbol, int symbolSize, int pageIndex)
{
return CreateNode(new NavMenuItem(text, pageIndex), symbol, symbolSize);
var node = CreateNode(text, pageIndex);
SetNodeSymbol(node, symbol, symbolSize);
return node;
}
public TreeNode CreateNode(UIPage page, int symbol, int symbolSize)
public TreeNode CreateChildNode(TreeNode parent, string text, Guid pageGuid)
{
return CreateNode(new NavMenuItem(page), symbol, symbolSize);
return CreateChildNode(parent, new NavMenuItem(text, pageGuid));
}
public TreeNode CreateNode(NavMenuItem item, int symbol, int symbolSize)
public int GetPageIndex(TreeNode node)
{
return MenuHelper.GetPageIndex(node);
}
private void SetNodeItem(TreeNode node, NavMenuItem item)
{
MenuHelper.Add(node, item);
}
private TreeNode CreateNode(NavMenuItem item)
{
TreeNode node = new TreeNode(item.Text);
Nodes.Add(node);
SetNodeItem(node, item);
MenuHelper.SetSymbol(node, symbol, symbolSize);
return node;
}
@ -814,7 +799,14 @@ namespace Sunny.UI
return CreateChildNode(parent, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
public TreeNode CreateChildNode(TreeNode parent, string text, int symbol, int symbolSize, int pageIndex)
{
var node = CreateChildNode(parent, text, pageIndex);
SetNodeSymbol(node, symbol, symbolSize);
return node;
}
private TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
{
TreeNode childNode = new TreeNode(item.Text);
parent.Nodes.Add(childNode);
@ -822,42 +814,6 @@ namespace Sunny.UI
return childNode;
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, string text, int pageIndex)
{
return CreateChildNode(parent, imageIndex, new NavMenuItem(text, pageIndex));
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, UIPage page)
{
return CreateChildNode(parent, imageIndex, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, NavMenuItem item)
{
TreeNode childNode = new TreeNode(item.Text);
parent.Nodes.Add(childNode);
SetNodeItem(childNode, item);
childNode.ImageIndex = imageIndex;
return childNode;
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, string text, int pageIndex)
{
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(text, pageIndex));
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, UIPage page)
{
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, NavMenuItem item)
{
TreeNode childNode = new TreeNode(item.Text);
parent.Nodes.Add(childNode);
SetNodeItem(childNode, item);
MenuHelper.SetSymbol(childNode, symbol, symbolSize);
return childNode;
}
#endregion
}
}

View File

@ -26,6 +26,7 @@
* 2022-01-02: V3.0.9
* 2022-03-19: V3.1.1
* 2022-03-24: V3.1.1 TipsText显示位置
* 2022-04-14: V3.1.3
******************************************************************************/
using System;
@ -554,43 +555,6 @@ namespace Sunny.UI
set => checkBoxes = false;
}
private readonly NavMenuHelper MenuHelper = new NavMenuHelper();
public int GetPageIndex(TreeNode node)
{
return MenuHelper.GetPageIndex(node);
}
public void SetNodeItem(TreeNode node, NavMenuItem item)
{
MenuHelper.Add(node, item);
}
public void SetNodePageIndex(TreeNode node, int pageIndex)
{
MenuHelper.SetPageIndex(node, pageIndex);
}
public void SetNodeTipsText(TreeNode node, string nodeTipsText)
{
MenuHelper.SetTipsText(node, nodeTipsText);
}
public void SetNodeTipsText(TreeNode node, string nodeTipsText, Color nodeTipsBackColor, Color nodeTipsForeColor)
{
MenuHelper.SetTipsText(node, nodeTipsText, nodeTipsBackColor, nodeTipsForeColor);
}
public void SetNodeSymbol(TreeNode node, int symbol, int symbolSize = 24)
{
MenuHelper.SetSymbol(node, symbol, symbolSize);
}
public void SetNodeImageIndex(TreeNode node, int imageIndex)
{
node.ImageIndex = imageIndex;
}
private bool showSecondBackColor;
[DefaultValue(false)]
@ -882,26 +846,6 @@ namespace Sunny.UI
ShowSelectedNode();
}
public void SelectPage(int pageIndex)
{
var node = MenuHelper.GetTreeNode(pageIndex);
if (node != null)
{
SelectedNode = node;
ShowSelectedNode();
}
}
public void SelectPage(Guid pageGuid)
{
var node = MenuHelper.GetTreeNode(pageGuid);
if (node != null)
{
SelectedNode = node;
ShowSelectedNode();
}
}
private void ShowSelectedNode()
{
NavMenuItem item = MenuHelper[SelectedNode];
@ -920,12 +864,7 @@ namespace Sunny.UI
}
}
MenuItemClick?.Invoke(SelectedNode, MenuHelper[SelectedNode], MenuHelper.GetPageIndex(SelectedNode));
}
public TreeNode GetTreeNode(int pageIndex)
{
return MenuHelper.GetTreeNode(pageIndex);
MenuItemClick?.Invoke(SelectedNode, MenuHelper[SelectedNode], GetPageIndex(SelectedNode));
}
protected override void OnMouseWheel(MouseEventArgs e)
@ -1028,64 +967,99 @@ namespace Sunny.UI
Win32.User.ShowScrollBar(Handle, 3, false);
}
#region
private readonly NavMenuHelper MenuHelper = new NavMenuHelper();
public void SelectPage(int pageIndex)
{
var node = MenuHelper.GetTreeNode(pageIndex);
if (node != null)
{
SelectedNode = node;
ShowSelectedNode();
}
}
public void SelectPage(Guid pageGuid)
{
var node = MenuHelper.GetTreeNode(pageGuid);
if (node != null)
{
SelectedNode = node;
ShowSelectedNode();
}
}
public int GetPageIndex(TreeNode node)
{
return MenuHelper.GetPageIndex(node);
}
public TreeNode GetTreeNode(int pageIndex)
{
return MenuHelper.GetTreeNode(pageIndex);
}
private void SetNodeItem(TreeNode node, NavMenuItem item)
{
MenuHelper.Add(node, item);
}
public UINavMenu SetNodePageIndex(TreeNode node, int pageIndex)
{
MenuHelper.SetPageIndex(node, pageIndex);
return this;
}
public UINavMenu SetNodeSymbol(TreeNode node, int symbol, int symbolSize = 24)
{
MenuHelper.SetSymbol(node, symbol, symbolSize);
return this;
}
public UINavMenu SetNodeImageIndex(TreeNode node, int imageIndex)
{
node.ImageIndex = imageIndex;
return this;
}
public void SetNodeTipsText(TreeNode node, string nodeTipsText)
{
MenuHelper.SetTipsText(node, nodeTipsText);
}
public void SetNodeTipsText(TreeNode node, string nodeTipsText, Color nodeTipsBackColor, Color nodeTipsForeColor)
{
MenuHelper.SetTipsText(node, nodeTipsText, nodeTipsBackColor, nodeTipsForeColor);
}
public TreeNode CreateNode(string text, int pageIndex)
{
return CreateNode(new NavMenuItem(text, pageIndex));
}
public TreeNode CreateNode(string text, Guid pageGuid)
{
return CreateNode(new NavMenuItem(text, pageGuid));
}
public TreeNode CreateNode(UIPage page)
{
return CreateNode(new NavMenuItem(page));
}
public TreeNode CreateNode(NavMenuItem item)
{
TreeNode node = new TreeNode(item.Text);
Nodes.Add(node);
SetNodeItem(node, item);
return node;
}
public TreeNode CreateNode(string text, int imageIndex, int pageIndex)
{
return CreateNode(new NavMenuItem(text, pageIndex), imageIndex);
}
public TreeNode CreateNode(UIPage page, int imageIndex)
{
return CreateNode(new NavMenuItem(page), imageIndex);
}
public TreeNode CreateNode(NavMenuItem item, int imageIndex)
{
TreeNode node = new TreeNode(item.Text);
Nodes.Add(node);
SetNodeItem(node, item);
node.ImageIndex = imageIndex;
return node;
}
public TreeNode CreateNode(int symbol, int symbolSize, UIPage page)
{
return CreateNode(new NavMenuItem(page), symbol, symbolSize);
}
public TreeNode CreateNode(string text, int symbol, int symbolSize, int pageIndex)
{
return CreateNode(new NavMenuItem(text, pageIndex), symbol, symbolSize);
var node = CreateNode(text, pageIndex);
SetNodeSymbol(node, symbol, symbolSize);
return node;
}
public TreeNode CreateNode(UIPage page, int symbol, int symbolSize)
{
return CreateNode(new NavMenuItem(page), symbol, symbolSize);
}
public TreeNode CreateNode(NavMenuItem item, int symbol, int symbolSize)
private TreeNode CreateNode(NavMenuItem item)
{
TreeNode node = new TreeNode(item.Text);
Nodes.Add(node);
SetNodeItem(node, item);
MenuHelper.SetSymbol(node, symbol, symbolSize);
return node;
}
@ -1094,6 +1068,11 @@ namespace Sunny.UI
return CreateChildNode(parent, new NavMenuItem(text, pageIndex));
}
public TreeNode CreateChildNode(TreeNode parent, string text, Guid pageGuid)
{
return CreateChildNode(parent, new NavMenuItem(text, pageGuid));
}
public TreeNode CreateChildNode(TreeNode parent, UIPage page)
{
var childNode = CreateChildNode(parent, new NavMenuItem(page));
@ -1105,7 +1084,14 @@ namespace Sunny.UI
return childNode;
}
public TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
public TreeNode CreateChildNode(TreeNode parent, string text, int symbol, int symbolSize, int pageIndex)
{
var node = CreateChildNode(parent, text, pageIndex);
SetNodeSymbol(node, symbol, symbolSize);
return node;
}
private TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
{
TreeNode childNode = new TreeNode(item.Text);
parent.Nodes.Add(childNode);
@ -1113,44 +1099,6 @@ namespace Sunny.UI
return childNode;
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, string text, int pageIndex)
{
return CreateChildNode(parent, imageIndex, new NavMenuItem(text, pageIndex));
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, UIPage page)
{
return CreateChildNode(parent, imageIndex, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, NavMenuItem item)
{
TreeNode childNode = new TreeNode(item.Text);
parent.Nodes.Add(childNode);
SetNodeItem(childNode, item);
childNode.ImageIndex = imageIndex;
return childNode;
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, string text, int pageIndex)
{
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(text, pageIndex));
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, UIPage page)
{
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, NavMenuItem item)
{
TreeNode childNode = new TreeNode(item.Text);
parent.Nodes.Add(childNode);
SetNodeItem(childNode, item);
MenuHelper.SetSymbol(childNode, symbol, symbolSize);
return childNode;
}
private readonly Dictionary<TreeNode, List<int>> TreeNodeSymbols = new Dictionary<TreeNode, List<int>>();
public void AddNodeRightSymbol(TreeNode node, int symbol)
@ -1184,6 +1132,8 @@ namespace Sunny.UI
}
}
#endregion
public delegate void OnNodeRightSymbolClick(object sender, TreeNode node, int index, int symbol);
public event OnNodeRightSymbolClick NodeRightSymbolClick;

View File

@ -17,9 +17,9 @@
* : 2020-01-01
*
* 2020-01-01: V2.2.0
* 2022-04-14: V3.1.3
******************************************************************************/
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@ -28,7 +28,7 @@ using System.Windows.Forms;
namespace Sunny.UI
{
public class NavMenuHelper
internal class NavMenuHelper
{
public NavMenuItem this[TreeNode node]
{
@ -326,12 +326,12 @@ namespace Sunny.UI
private TabPage CreateTabIfNotExists(int pageIndex)
{
return CreateTabIfNotExists(new NavMenuItem(pageIndex));
return CreateTabIfNotExists(new NavMenuItem("", pageIndex));
}
private TabPage CreateTabIfNotExists(Guid guid)
{
return CreateTabIfNotExists(new NavMenuItem(guid));
return CreateTabIfNotExists(new NavMenuItem("", guid));
}
public bool SelectPage(int pageIndex)
@ -532,14 +532,10 @@ namespace Sunny.UI
Text = text;
}
public NavMenuItem(int pageIndex)
{
PageIndex = pageIndex;
}
public NavMenuItem(Guid guid)
public NavMenuItem(string text, Guid guid)
{
PageGuid = guid;
Text = text;
}
}
}

View File

@ -76,6 +76,24 @@ namespace Sunny.UI
titleForeColor = UIStyles.Blue.PageTitleForeColor;
}
public UIPage SetPageIndex(int pageIndex)
{
PageIndex = pageIndex;
return this;
}
public UIPage SetPageGuid(Guid pageGuid)
{
PageGuid = pageGuid;
return this;
}
public UIPage SetText(string text)
{
Text = text;
return this;
}
[DefaultValue(false), Category("SunnyUI"), Description("禁止控件跟随窗体缩放")]
public bool ZoomScaleDisabled { get; set; }