前提
入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
如果觉得写的还行,请点个 star 支持一下吧
来都来了,点个【推荐】再走吧,谢谢
NuGet
Install-Package HZH_Controls
目录
https://www.cnblogs.com/bfyx/p/11364884.html
用处及效果
以上为demo效果,你使用此控件可以实现以下弹出效果
准备工作
没什么准备的
开始
添加一个类NavigationMenuItemExt 继承NavigationMenuItemBase
1 public class NavigationMenuItemExt : NavigationMenuItemBase 2 { 3 public System.Windows.Forms.Control ShowControl { get; set; } 4 }
添加一个用户控件UCNavigationMenuExt
添加属性
1 /// <summary> 2 /// Occurs when [click itemed]. 3 /// </summary> 4 [Description("点击节点事件"), Category("自定义")] 5 6 public event EventHandler ClickItemed; 7 /// <summary> 8 /// The select item 9 /// </summary> 10 private NavigationMenuItemExt selectItem = null; 11 12 /// <summary> 13 /// Gets the select item. 14 /// </summary> 15 /// <value>The select item.</value> 16 [Description("选中的节点"), Category("自定义")] 17 public NavigationMenuItemExt SelectItem 18 { 19 get { return selectItem; } 20 private set { selectItem = value; } 21 } 22 23 /// <summary> 24 /// The items 25 /// </summary> 26 NavigationMenuItemExt[] items; 27 28 /// <summary> 29 /// Gets or sets the items. 30 /// </summary> 31 /// <value>The items.</value> 32 [Description("节点列表"), Category("自定义")] 33 public NavigationMenuItemExt[] Items 34 { 35 get { return items; } 36 set 37 { 38 items = value; 39 ReloadMenu(); 40 } 41 } 42 /// <summary> 43 /// The tip color 44 /// </summary> 45 private Color tipColor = Color.FromArgb(255, 87, 34); 46 47 /// <summary> 48 /// Gets or sets the color of the tip. 49 /// </summary> 50 /// <value>The color of the tip.</value> 51 [Description("角标颜色"), Category("自定义")] 52 public Color TipColor 53 { 54 get { return tipColor; } 55 set { tipColor = value; } 56 } 57 58 /// <summary> 59 /// 获取或设置控件的前景色。 60 /// </summary> 61 /// <value>The color of the fore.</value> 62 /// <PermissionSet> 63 /// <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /> 64 /// </PermissionSet> 65 public override System.Drawing.Color ForeColor 66 { 67 get 68 { 69 return base.ForeColor; 70 } 71 set 72 { 73 base.ForeColor = value; 74 foreach (Control c in this.Controls) 75 { 76 c.ForeColor = value; 77 } 78 } 79 } 80 /// <summary> 81 /// 获取或设置控件显示的文字的字体。 82 /// </summary> 83 /// <value>The font.</value> 84 /// <PermissionSet> 85 /// <IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /> 86 /// <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /> 87 /// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode, ControlEvidence" /> 88 /// <IPermission class="System.Diagnostics.PerformanceCounterPermission, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /> 89 /// </PermissionSet> 90 public override Font Font 91 { 92 get 93 { 94 return base.Font; 95 } 96 set 97 {