diff --git a/Bin/net40/SunnyUI.Demo.exe b/Bin/net40/SunnyUI.Demo.exe index ca131898..67d177e7 100644 Binary files a/Bin/net40/SunnyUI.Demo.exe and b/Bin/net40/SunnyUI.Demo.exe differ diff --git a/Bin/net40/SunnyUI.dll b/Bin/net40/SunnyUI.dll index 59de9658..cef7a68d 100644 Binary files a/Bin/net40/SunnyUI.dll and b/Bin/net40/SunnyUI.dll differ diff --git a/Bin/net5.0-windows/SunnyUI.dll b/Bin/net5.0-windows/SunnyUI.dll index de928a5e..8b70fa19 100644 Binary files a/Bin/net5.0-windows/SunnyUI.dll and b/Bin/net5.0-windows/SunnyUI.dll differ diff --git a/Bin/net5.0-windows/ref/SunnyUI.dll b/Bin/net5.0-windows/ref/SunnyUI.dll index c877d671..75ac4492 100644 Binary files a/Bin/net5.0-windows/ref/SunnyUI.dll and b/Bin/net5.0-windows/ref/SunnyUI.dll differ diff --git a/Bin/netcoreapp3.1/SunnyUI.dll b/Bin/netcoreapp3.1/SunnyUI.dll index 462b092b..586631cc 100644 Binary files a/Bin/netcoreapp3.1/SunnyUI.dll and b/Bin/netcoreapp3.1/SunnyUI.dll differ diff --git a/SunnyUI.Demo/FMain.Designer.cs b/SunnyUI.Demo/FMain.Designer.cs index d35f7667..f18710e5 100644 --- a/SunnyUI.Demo/FMain.Designer.cs +++ b/SunnyUI.Demo/FMain.Designer.cs @@ -29,10 +29,10 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("控件"); - System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("窗体"); - System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("图表"); - System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("主题"); + System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("控件"); + System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("窗体"); + System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("图表"); + System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("主题"); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMain)); this.uiLogo1 = new Sunny.UI.UILogo(); this.uiAvatar = new Sunny.UI.UIAvatar(); @@ -46,35 +46,39 @@ // // Aside // + this.Aside.ExpandSelectFirst = false; this.Aside.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); this.Aside.ItemHeight = 36; this.Aside.LineColor = System.Drawing.Color.Black; this.Aside.Location = new System.Drawing.Point(2, 145); this.Aside.MenuStyle = Sunny.UI.UIMenuStyle.Black; + this.Aside.SecondBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(66)))), ((int)(((byte)(66))))); this.Aside.ShowOneNode = true; + this.Aside.ShowSecondBackColor = true; this.Aside.ShowTips = true; this.Aside.Size = new System.Drawing.Size(250, 573); this.Aside.Style = Sunny.UI.UIStyle.Custom; + this.Aside.StyleCustomMode = true; // // Header // this.Header.Controls.Add(this.uiAvatar); this.Header.Controls.Add(this.uiLogo1); this.Header.Location = new System.Drawing.Point(2, 35); - treeNode1.ImageIndex = 1; - treeNode1.Name = "节点0"; - treeNode1.Text = "控件"; - treeNode2.Name = "节点1"; - treeNode2.Text = "窗体"; - treeNode3.Name = "节点2"; - treeNode3.Text = "图表"; - treeNode4.Name = "节点2"; - treeNode4.Text = "主题"; + treeNode5.ImageIndex = 1; + treeNode5.Name = "节点0"; + treeNode5.Text = "控件"; + treeNode6.Name = "节点1"; + treeNode6.Text = "窗体"; + treeNode7.Name = "节点2"; + treeNode7.Text = "图表"; + treeNode8.Name = "节点2"; + treeNode8.Text = "主题"; this.Header.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { - treeNode1, - treeNode2, - treeNode3, - treeNode4}); + treeNode5, + treeNode6, + treeNode7, + treeNode8}); this.Header.SelectedIndex = 0; this.Header.Size = new System.Drawing.Size(1020, 110); this.Header.Style = Sunny.UI.UIStyle.Custom; diff --git a/SunnyUI/Controls/UINavMenu.cs b/SunnyUI/Controls/UINavMenu.cs index 6b771508..60a9e77e 100644 --- a/SunnyUI/Controls/UINavMenu.cs +++ b/SunnyUI/Controls/UINavMenu.cs @@ -338,6 +338,7 @@ namespace Sunny.UI selectedColor = uiColor.SelectedColor; foreColor = uiColor.UnSelectedForeColor; hoverColor = uiColor.HoverColor; + secondBackColor = uiColor.SecondBackColor; if (Bar != null) { @@ -445,6 +446,38 @@ namespace Sunny.UI node.ImageIndex = imageIndex; } + private bool showSecondBackColor; + + [DefaultValue(false)] + [Description("显示二级节点背景颜色"), Category("SunnyUI")] + public bool ShowSecondBackColor + { + get => showSecondBackColor; + set + { + showSecondBackColor = value; + Invalidate(); + } + } + + private Color secondBackColor = UIColor.Blue; + + [DefaultValue(typeof(Color), "66, 66, 66")] + [Description("二级节点背景颜色"), Category("SunnyUI")] + public Color SecondBackColor + { + get => secondBackColor; + set + { + if (secondBackColor != value) + { + secondBackColor = value; + _style = UIStyle.Custom; + Invalidate(); + } + } + } + protected override void OnDrawNode(DrawTreeNodeEventArgs e) { if (BorderStyle != BorderStyle.None) @@ -495,7 +528,13 @@ namespace Sunny.UI } else { - e.Graphics.FillRectangle(fillColor, new Rectangle(new Point(0, e.Node.Bounds.Y), new Size(Width, e.Node.Bounds.Height))); + Color color = fillColor; + if (showSecondBackColor && e.Node.Level > 0) + { + color = SecondBackColor; + } + + e.Graphics.FillRectangle(color, new Rectangle(new Point(0, e.Node.Bounds.Y), new Size(Width, e.Node.Bounds.Height))); e.Graphics.DrawString(e.Node.Text, Font, ForeColor, drawLeft, e.Bounds.Y + (ItemHeight - sf.Height) / 2.0f); } diff --git a/SunnyUI/Style/UIMenuStyle.cs b/SunnyUI/Style/UIMenuStyle.cs index e000a967..86d521e0 100644 --- a/SunnyUI/Style/UIMenuStyle.cs +++ b/SunnyUI/Style/UIMenuStyle.cs @@ -54,7 +54,7 @@ namespace Sunny.UI public virtual Color SelectedColor => Color.FromArgb(36, 36, 36); public virtual Color UnSelectedForeColor => Color.FromArgb(240, 240, 240); public virtual Color HoverColor => Color.FromArgb(76, 76, 76); - + public virtual Color SecondBackColor => Color.FromArgb(66, 66, 66); public override string ToString() { return Style.DisplayText(); @@ -74,9 +74,10 @@ namespace Sunny.UI public class UIMenuWhiteColor : UIMenuColor { public override UIMenuStyle Style => UIMenuStyle.White; - public override Color BackColor => Color.FromArgb(250, 250, 250); - public override Color SelectedColor => Color.FromArgb(240, 240, 240); + public override Color BackColor => Color.FromArgb(240, 240, 240); + public override Color SelectedColor => Color.FromArgb(250, 250, 250); public override Color UnSelectedForeColor => UIFontColor.Primary; public override Color HoverColor => Color.FromArgb(230, 230, 230); + public override Color SecondBackColor => Color.FromArgb(235, 235, 235); } } \ No newline at end of file