* 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> /// </summary>
[Description("是否显示表格线"), Category("SunnyUI")] [Description("是否显示表格线"), Category("SunnyUI")]
[DefaultValue(false)] [DefaultValue(true)]
public bool ShowGridLine public bool ShowGridLine
{ {
get => CellBorderStyle == DataGridViewCellBorderStyle.Single; 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; private Color _rectColor = UIColor.Blue;

View File

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

View File

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

View File

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

View File

@ -76,6 +76,24 @@ namespace Sunny.UI
titleForeColor = UIStyles.Blue.PageTitleForeColor; 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("禁止控件跟随窗体缩放")] [DefaultValue(false), Category("SunnyUI"), Description("禁止控件跟随窗体缩放")]
public bool ZoomScaleDisabled { get; set; } public bool ZoomScaleDisabled { get; set; }