diff --git a/SunnyUI/Controls/UIDataGridView.cs b/SunnyUI/Controls/UIDataGridView.cs index 2a4a95e6..dd8ae6e9 100644 --- a/SunnyUI/Controls/UIDataGridView.cs +++ b/SunnyUI/Controls/UIDataGridView.cs @@ -592,11 +592,15 @@ namespace Sunny.UI /// 是否显示表格线 /// [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; diff --git a/SunnyUI/Controls/UINavBar.cs b/SunnyUI/Controls/UINavBar.cs index 78821cf3..47daf3db 100644 --- a/SunnyUI/Controls/UINavBar.cs +++ b/SunnyUI/Controls/UINavBar.cs @@ -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; - } - /// /// Tag字符串 /// @@ -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 扩展函数 } } \ No newline at end of file diff --git a/SunnyUI/Controls/UINavMenu.cs b/SunnyUI/Controls/UINavMenu.cs index be8df451..7b4abd33 100644 --- a/SunnyUI/Controls/UINavMenu.cs +++ b/SunnyUI/Controls/UINavMenu.cs @@ -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> TreeNodeSymbols = new Dictionary>(); 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; diff --git a/SunnyUI/Controls/UINavMenuHelper.cs b/SunnyUI/Controls/UINavMenuHelper.cs index 9f9abb41..7396b137 100644 --- a/SunnyUI/Controls/UINavMenuHelper.cs +++ b/SunnyUI/Controls/UINavMenuHelper.cs @@ -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; } } } \ No newline at end of file diff --git a/SunnyUI/Frames/UIPage.cs b/SunnyUI/Frames/UIPage.cs index 6e96631f..924966e2 100644 --- a/SunnyUI/Frames/UIPage.cs +++ b/SunnyUI/Frames/UIPage.cs @@ -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; }