c#Winform自定义控件-列表
Posted bfyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#Winform自定义控件-列表相关的知识,希望对你有一定的参考价值。
前提
入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。
开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control
如果觉得写的还行,请点个 star 支持一下吧
准备工作
列表控件将被拆分为2部分,一个元素,一个列表,列表需要支持主副标题,图标等
开始
首先定义一个数据源类(其实更好的是应该接受object,然后通过绑定字段反射绑定数据,这样就不需要这个数据源类了,这里偷懒了)
1 /// <summary> 2 /// 列表实体 3 /// </summary> 4 [Serializable] 5 public class ListEntity 6 7 /// <summary> 8 /// 编码,唯一值 9 /// </summary> 10 public string ID get; set; 11 /// <summary> 12 /// 大标题 13 /// </summary> 14 public string Title get; set; 15 /// <summary> 16 /// 右侧更多按钮 17 /// </summary> 18 public bool ShowMoreBtn get; set; 19 /// <summary> 20 /// 右侧副标题 21 /// </summary> 22 public string Title2 get; set; 23 /// <summary> 24 /// 关联的数据源 25 /// </summary> 26 public object Source get; set; 27
我们创建元素控件,添加一个用户控件,命名UCListItemExt
需要提供一下属性
1 [Description("标题"), Category("自定义")] 2 public string Title 3 4 get return label1.Text; 5 set label1.Text = value; 6 7 [Description("副标题"), Category("自定义")] 8 public string Title2 9 10 get return label3.Text; 11 set 12 13 label3.Text = value; 14 label3.Visible = !string.IsNullOrEmpty(value); 15 16 17 18 [Description("标题字体"), Category("自定义")] 19 public Font TitleFont 20 21 get return label1.Font; 22 set 23 24 label1.Font = value; 25 26 27 28 [Description("副标题字体"), Category("自定义")] 29 public Font Title2Font 30 31 get return label3.Font; 32 set 33 34 label3.Font = value; 35 36 37 38 [Description("背景色"), Category("自定义")] 39 public Color ItemBackColor 40 41 get return this.BackColor; 42 set 43 44 this.BackColor = value; 45 46 47 48 [Description("标题文本色"), Category("自定义")] 49 public Color ItemForeColor 50 51 get return label1.ForeColor; 52 set label1.ForeColor = value; 53 54 55 [Description("副标题文本色"), Category("自定义")] 56 public Color ItemForeColor2 57 58 get return label3.ForeColor; 59 set label3.ForeColor = value; 60 61 62 [Description("是否显示右侧更多箭头"), Category("自定义")] 63 public bool ShowMoreBtn 64 65 get return label2.Visible; 66 set label2.Visible = value; ; 67 68 69 [Description("项选中事件"), Category("自定义")] 70 public event EventHandler ItemClick; 71 72 /// <summary> 73 /// 数据源 74 /// </summary> 75 public ListEntity DataSource get; private set;
开放一个对外的设置数据源入口
1 #region 设置数据 2 /// <summary> 3 /// 功能描述:设置数据 4 /// 作 者:HZH 5 /// 创建日期:2019-02-27 11:52:52 6 /// 任务编号:POS 7 /// </summary> 8 /// <param name="data">data</param> 9 public void SetData(ListEntity data) 10 11 this.Title = data.Title; 12 this.Title2 = data.Title2; 13 this.ShowMoreBtn = data.ShowMoreBtn; 14 DataSource = data; 15 16 #endregion
再处理一下点击事件
1 private void item_MouseDown(object sender, MouseEventArgs e) 2 3 if (ItemClick != null) 4 5 ItemClick(this, e); 6 7
至此功能完成,看下完整代码
1 // 版权所有 黄正辉 交流群:568015492 QQ:623128629 2 // 文件名称:UCListItemExt.cs 3 // 创建日期:2019-08-15 16:01:34 4 // 功能描述:List 5 // 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 6 using System; 7 using System.Collections.Generic; 8 using System.ComponentModel; 9 using System.Drawing; 10 using System.Data; 11 using System.Linq; 12 using System.Text; 13 using System.Windows.Forms; 14 15 namespace HZH_Controls.Controls 16 17 [ToolboxItem(false)] 18 public partial class UCListItemExt : UserControl 19 20 [Description("标题"), Category("自定义")] 21 public string Title 22 23 get return label1.Text; 24 set label1.Text = value; 25 26 [Description("副标题"), Category("自定义")] 27 public string Title2 28 29 get return label3.Text; 30 set 31 32 label3.Text = value; 33 label3.Visible = !string.IsNullOrEmpty(value); 34 35 36 37 [Description("标题字体"), Category("自定义")] 38 public Font TitleFont 39 40 get return label1.Font; 41 set 42 43 label1.Font = value; 44 45 46 47 [Description("副标题字体"), Category("自定义")] 48 public Font Title2Font 49 50 get return label3.Font; 51 set 52 53 label3.Font = value; 54 55 56 57 [Description("背景色"), Category("自定义")] 58 public Color ItemBackColor 59 60 get return this.BackColor; 61 set 62 63 this.BackColor = value; 64 65 66 67 [Description("标题文本色"), Category("自定义")] 68 public Color ItemForeColor 69 70 get return label1.ForeColor; 71 set label1.ForeColor = value; 72 73 74 [Description("副标题文本色"), Category("自定义")] 75 public Color ItemForeColor2 76 77 get return label3.ForeColor; 78 set label3.ForeColor = value; 79 80 81 [Description("是否显示右侧更多箭头"), Category("自定义")] 82 public bool ShowMoreBtn 83 84 get return label2.Visible; 85 set label2.Visible = value; ; 86 87 88 [Description("项选中事件"), Category("自定义")] 89 public event EventHandler ItemClick; 90 91 /// <summary> 92 /// 数据源 93 /// </summary> 94 public ListEntity DataSource get; private set; 95 96 public UCListItemExt() 97 98 InitializeComponent(); 99 SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true); 100 this.UpdateStyles(); 101 102 103 private void item_MouseDown(object sender, MouseEventArgs e) 104 105 if (ItemClick != null) 106 107 ItemClick(this, e); 108 109 110 111 #region 设置数据 112 /// <summary> 113 /// 功能描述:设置数据 114 /// 作 者:HZH 115 /// 创建日期:2019-02-27 11:52:52 116 /// 任务编号:POS 117 /// </summary> 118 /// <param name="data">data</param> 119 public void SetData(ListEntity data) 120 121 this.Title = data.Title; 122 this.Title2 = data.Title2; 123 this.ShowMoreBtn = data.ShowMoreBtn; 124 DataSource = data; 125 126 #endregion 127 128
1 namespace HZH_Controls.Controls 2 3 partial class UCListItemExt 4 5 /// <summary> 6 /// 必需的设计器变量。 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// 清理所有正在使用的资源。 12 /// </summary> 13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> 14 protected override void Dispose(bool disposing) 15 16 if (disposing && (components != null)) 17 18 components.Dispose(); 19 20 base.Dispose(disposing); 21 22 23 #region 组件设计器生成的代码 24 25 /// <summary> 26 /// 设计器支持所需的方法 - 不要 27 /// 使用代码编辑器修改此方法的内容。 28 /// </summary> 29 private void InitializeComponent() 30 31 this.components = new System.ComponentModel.Container(); 32 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UCListItemExt)); 33 this.label1 = new System.Windows.Forms.Label(); 34 this.imageList1 = new System.Windows.Forms.ImageList(this.components); 35 this.label3 = new System.Windows.Forms.Label(); 36 this.splitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); 37 this.label2 = new System.Windows.Forms.Label(); 38 this.SuspendLayout(); 39 // 40 // label1 41 // 42 this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 43 this.label1.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 44 this.label1.Location = new System.Drawing.Point(0, 0); 45 this.label1.Name = "label1"; 46 this.label1.Padding = new System.Windows.Forms.Padding(15, 0, 0, 0); 47 this.label1.Size = new System.Drawing.Size(173, 48); 48 this.label1.TabIndex = 0; 49 this.label1.Text = "label1"; 50 this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 51 this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.item_MouseDown); 52 // 53 // imageList1 54 // 55 this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); 56 this.imageList1.TransparentColor = System.Drawing.Color.Transparent; 57 this.imageList1.Images.SetKeyName(0, "setting_arrow.png"); 58 // 59 // label3 60 // 61 this.label3.Dock = System.Windows.Forms.DockStyle.Right; 62 this.label3.Font = new System.Drawing.Font("微软雅黑", 14F); 63 this.label3.ForeColor = System.Drawing.Color.FromArgb(73, 119, 232); 64 this.label3.Location = new System.Drawing.Point(173, 0); 65 this.label3.Name = "label3"; 66 this.label3.Padding = new System.Windows.Forms.Padding(15, 0, 0, 0); 67 this.label3.Size = new System.Drawing.Size(139, 48); 68 this.label3.TabIndex = 2; 69 this.label3.Text = "label3"; 70 this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; 71 this.label3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.item_MouseDown); 72 // 73 // splitLine_H1 74 // 75 this.splitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); 76 this.splitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; 77 this.splitLine_H1.Location = new System.Drawing.Point(0, 48); 78 this.splitLine_H1.MaximumSize = new System.Drawing.Size(0, 1); 79 this.splitLine_H1.Name = "splitLine_H1"; 80 this.splitLine_H1.Size = new System.Drawing.Size(355, 1); 81 this.splitLine_H1.TabIndex = 3; 82 // 83 // label2 84 // 85 this.label2.Dock = System.Windows.Forms.DockStyle.Right; 86 this.label2.ImageIndex = 0; 87 this.label2.ImageList = this.imageList1; 88 this.label2.Location = new System.Drawing.Point(312, 0); 89 this.label2.Name = "label2"; 90 this.label2.Padding = new System.Windows.Forms.Padding(0, 0, 15, 0); 91 this.label2.Size = new System.Drawing.Size(43, 48); 92 this.label2.TabIndex = 1; 93 this.label2.Visible = false; 94 this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.item_MouseDown); 95 // 96 // UCListItemExt 97 // 98 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 99 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 100 this.BackColor = System.Drawing.Color.White; 101 this.Controls.Add(this.label1); 102 this.Controls.Add(this.label3); 103 this.Controls.Add(this.label2); 104 this.Controls.Add(this.splitLine_H1); 105 this.Name = "UCListItemExt"; 106 this.Size = new System.Drawing.Size(355, 49); 107 this.ResumeLayout(false); 108 109 110 111 #endregion 112 113 private System.Windows.Forms.Label label1; 114 private System.Windows.Forms.Label label2; 115 private System.Windows.Forms.ImageList imageList1; 116 private System.Windows.Forms.Label label3; 117 private UCSplitLine_H splitLine_H1; 118 119
设计样式如下
接着我们需要创建列表控件,添加用户控件,命名UCListExt
看下需要哪些属性
1 private Font _titleFont = new Font("微软雅黑", 15F); 2 [Description("标题字体"), Category("自定义")] 3 public Font TitleFont 4 5 get return _titleFont; 6 set _titleFont = value; 7 8 private Font _title2Font = new Font("微软雅黑", 14F); 9 [Description("副标题字体"), Category("自定义")] 10 public Font Title2Font 11 12 get return _title2Font; 13 set _title2Font = value; 14 15 16 private Color _itemBackColor = Color.White; 17 [Description("标题背景色"), Category("自定义")] 18 public Color ItemBackColor 19 20 get return _itemBackColor; 21 set _itemBackColor = value; 22 23 24 private Color _itemSelectedBackColor = Color.FromArgb(73, 119, 232); 25 26 [Description("标题选中背景色"), Category("自定义")] 27 public Color ItemSelectedBackColor 28 29 get return _itemSelectedBackColor; 30 set _itemSelectedBackColor = value; 31 32 33 private Color _itemForeColor = Color.Black; 34 35 [Description("标题文本色"), Category("自定义")] 36 public Color ItemForeColor 37 38 get return _itemForeColor; 39 set _itemForeColor = value; 40 41 private Color _itemSelectedForeColor = Color.White; 42 43 [Description("标题选中文本色"), Category("自定义")] 44 public Color ItemSelectedForeColor 45 46 get return _itemSelectedForeColor; 47 set _itemSelectedForeColor = value; 48 49 private Color _itemForeColor2 = Color.FromArgb(73, 119, 232); 50 51 [Description("副标题文本色"), Category("自定义")] 52 public Color ItemForeColor2 53 54 get return _itemForeColor2; 55 set _itemForeColor2 = value; 56 57 private Color _itemSelectedForeColor2 = Color.White; 58 59 [Description("副标题选中文本色"), Category("自定义")] 60 public Color ItemSelectedForeColor2 61 62 get return _itemSelectedForeColor2; 63 set _itemSelectedForeColor2 = value; 64 65 66 private int _itemHeight = 60; 67 68 [Description("项高度"), Category("自定义")] 69 public int ItemHeight 70 71 get return _itemHeight; 72 set _itemHeight = value; 73 74 75 private bool _autoSelectFirst = true; 76 [Description("自动选中第一项"), Category("自定义")] 77 public bool AutoSelectFirst 78 79 get return _autoSelectFirst; 80 set _autoSelectFirst = value; 81 82 public delegate void ItemClickEvent(UCListItemExt item); 83 [Description("选中项事件"), Category("自定义")] 84 public event ItemClickEvent ItemClick; 85 86 private bool _selectedCanClick = false; 87 [Description("选中后是否可以再次触发点击事件"), Category("自定义")] 88 public bool SelectedCanClick 89 90 get return _selectedCanClick; 91 set _selectedCanClick = value; 92 93 94 /// <summary> 95 /// 选中的节点 96 /// </summary> 97 public UCListItemExt SelectItem 98 99 get return _current; 100
向外暴露一个设置数据源的函数
1 public void SetList(List<ListEntity> lst) 2 3 try 4 5 ControlHelper.FreezeControl(this, true); 6 this.Controls.Clear(); 7 this.SuspendLayout(); 8 UCListItemExt _first = null; 9 for (int i = lst.Count - 1; i >= 0; i--) 10 11 var item = lst[i]; 12 UCListItemExt li = new UCListItemExt(); 13 li.Height = _itemHeight; 14 li.TitleFont = _titleFont; 15 li.Title2Font = _title2Font; 16 li.ItemBackColor = _itemBackColor; 17 li.ItemForeColor = _itemForeColor; 18 li.ItemForeColor2 = _itemForeColor2; 19 li.Dock = DockStyle.Top; 20 li.SetData(item); 21 li.ItemClick += (s, e) => SelectLabel((UCListItemExt)s); ; 22 this.Controls.Add(li); 23 _first = li; 24 25 if (_autoSelectFirst) 26 SelectLabel(_first); 27 this.ResumeLayout(false); 28 29 Timer timer = new Timer(); 30 timer.Interval = 10; 31 timer.Tick += (a, b) => 32 33 timer.Enabled = false; 34 this.VerticalScroll.Value = 1; 35 this.VerticalScroll.Value = 0; 36 this.Refresh(); 37 ; 38 timer.Enabled = true; 39 40 finally 41 42 ControlHelper.FreezeControl(this, false); 43 44
选中项的处理
1 private void SelectLabel(UCListItemExt li) 2 3 try 4 5 HZH_Controls.ControlHelper.FreezeControl(this, true); 6 this.FindForm().ActiveControl = this; 7 if (_current != null) 8 9 if (_current == li && !_selectedCanClick) 10 return; 11 _current.ItemBackColor = _itemBackColor; 12 _current.ItemForeColor = _itemForeColor; 13 _current.ItemForeColor2 = _itemForeColor2; 14 15 li.ItemBackColor = _itemSelectedBackColor; 16 li.ItemForeColor = _itemSelectedForeColor; 17 li.ItemForeColor2 = _itemSelectedForeColor2; 18 19 _current = li; 20 if (ItemClick != null) 21 22 ItemClick(li); 23 24 25 finally 26 27 HZH_Controls.ControlHelper.FreezeControl(this, false); 28 29
完成,看下完整代码
1 // 版权所有 黄正辉 交流群:568015492 QQ:623128629 2 // 文件名称:UCListExt.cs 3 // 创建日期:2019-08-15 16:01:22 4 // 功能描述:List 5 // 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 6 using System; 7 using System.Collections.Generic; 8 using System.ComponentModel; 9 using System.Drawing; 10 using System.Data; 11 using System.Linq; 12 using System.Text; 13 using System.Windows.Forms; 14 15 namespace HZH_Controls.Controls 16 17 [DefaultEvent("ItemClick")] 18 public partial class UCListExt : UserControl 19 20 private Font _titleFont = new Font("微软雅黑", 15F); 21 [Description("标题字体"), Category("自定义")] 22 public Font TitleFont 23 24 get return _titleFont; 25 set _titleFont = value; 26 27 private Font _title2Font = new Font("微软雅黑", 14F); 28 [Description("副标题字体"), Category("自定义")] 29 public Font Title2Font 30 31 get return _title2Font; 32 set _title2Font = value; 33 34 35 private Color _itemBackColor = Color.White; 36 [Description("标题背景色"), Category("自定义")] 37 public Color ItemBackColor 38 39 get return _itemBackColor; 40 set _itemBackColor = value; 41 42 43 private Color _itemSelectedBackColor = Color.FromArgb(73, 119, 232); 44 45 [Description("标题选中背景色"), Category("自定义")] 46 public Color ItemSelectedBackColor 47 48 get return _itemSelectedBackColor; 49 set _itemSelectedBackColor = value; 50 51 52 private Color _itemForeColor = Color.Black; 53 54 [Description("标题文本色"), Category("自定义")] 55 public Color ItemForeColor 56 57 get return _itemForeColor; 58 set _itemForeColor = value; 59 60 private Color _itemSelectedForeColor = Color.White; 61 62 [Description("标题选中文本色"), Category("自定义")] 63 public Color ItemSelectedForeColor 64 65 get return _itemSelectedForeColor; 66 set _itemSelectedForeColor = value; 67 68 private Color _itemForeColor2 = Color.FromArgb(73, 119, 232); 69 70 [Description("副标题文本色"), Category("自定义")] 71 public Color ItemForeColor2 72 73 get return _itemForeColor2; 74 set _itemForeColor2 = value; 75 76 private Color _itemSelectedForeColor2 = Color.White; 77 78 [Description("副标题选中文本色"), Category("自定义")] 79 public Color ItemSelectedForeColor2 80 81 get return _itemSelectedForeColor2; 82 set _itemSelectedForeColor2 = value; 83 84 85 private int _itemHeight = 60; 86 87 [Description("项高度"), Category("自定义")] 88 public int ItemHeight 89 90 get return _itemHeight; 91 set _itemHeight = value; 92 93 94 private bool _autoSelectFirst = true; 95 [Description("自动选中第一项"), Category("自定义")] 96 public bool AutoSelectFirst 97 98 get return _autoSelectFirst; 99 set _autoSelectFirst = value; 100 101 public delegate void ItemClickEvent(UCListItemExt item); 102 [Description("选中项事件"), Category("自定义")] 103 public event ItemClickEvent ItemClick; 104 105 private bool _selectedCanClick = false; 106 [Description("选中后是否可以再次触发点击事件"), Category("自定义")] 107 public bool SelectedCanClick 108 109 get return _selectedCanClick; 110 set _selectedCanClick = value; 111 112 113 /// <summary> 114 /// 选中的节点 115 /// </summary> 116 public UCListItemExt SelectItem 117 118 get return _current; 119 120 UCListItemExt _current = null; 121 public UCListExt() 122 123 InitializeComponent(); 124 SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true); 125 this.UpdateStyles(); 126 127 128 public void SetList(List<ListEntity> lst) 129 130 try 131 132 ControlHelper.FreezeControl(this, true); 133 this.Controls.Clear(); 134 this.SuspendLayout(); 135 UCListItemExt _first = null; 136 for (int i = lst.Count - 1; i >= 0; i--) 137 138 var item = lst[i]; 139 UCListItemExt li = new UCListItemExt(); 140 li.Height = _itemHeight; 141 li.TitleFont = _titleFont; 142 li.Title2Font = _title2Font; 143 li.ItemBackColor = _itemBackColor; 144 li.ItemForeColor = _itemForeColor; 145 li.ItemForeColor2 = _itemForeColor2; 146 li.Dock = DockStyle.Top; 147 li.SetData(item); 148 li.ItemClick += (s, e) => SelectLabel((UCListItemExt)s); ; 149 this.Controls.Add(li); 150 _first = li; 151 152 if (_autoSelectFirst) 153 SelectLabel(_first); 154 this.ResumeLayout(false); 155 156 Timer timer = new Timer(); 157 timer.Interval = 10; 158 timer.Tick += (a, b) => 159 160 timer.Enabled = false; 161 this.VerticalScroll.Value = 1; 162 this.VerticalScroll.Value = 0; 163 this.Refresh(); 164 ; 165 timer.Enabled = true; 166 167 finally 168 169 ControlHelper.FreezeControl(this, false); 170 171 172 173 private void SelectLabel(UCListItemExt li) 174 175 try 176 177 HZH_Controls.ControlHelper.FreezeControl(this, true); 178 this.FindForm().ActiveControl = this; 179 if (_current != null) 180 181 if (_current == li && !_selectedCanClick) 182 return; 183 _current.ItemBackColor = _itemBackColor; 184 _current.ItemForeColor = _itemForeColor; 185 _current.ItemForeColor2 = _itemForeColor2; 186 187 li.ItemBackColor = _itemSelectedBackColor; 188 li.ItemForeColor = _itemSelectedForeColor; 189 li.ItemForeColor2 = _itemSelectedForeColor2; 190 191 _current = li; 192 if (ItemClick != null) 193 194 ItemClick(li); 195 196 197 finally 198 199 HZH_Controls.ControlHelper.FreezeControl(this, false); 200 201 202 203 204 205
1 namespace HZH_Controls.Controls 2 3 partial class UCListExt 4 5 /// <summary> 6 /// 必需的设计器变量。 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// 清理所有正在使用的资源。 12 /// </summary> 13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> 14 protected override void Dispose(bool disposing) 15 16 if (disposing && (components != null)) 17 18 components.Dispose(); 19 20 base.Dispose(disposing); 21 22 23 #region 组件设计器生成的代码 24 25 /// <summary> 26 /// 设计器支持所需的方法 - 不要 27 /// 使用代码编辑器修改此方法的内容。 28 /// </summary> 29 private void InitializeComponent() 30 31 this.SuspendLayout(); 32 // 33 // ListExt 34 // 35 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 36 this.AutoScroll = true; 37 this.Name = "ListExt"; 38 this.Size = new System.Drawing.Size(336, 368); 39 this.ResumeLayout(false); 40 41 42 43 #endregion 44 45
用处及效果
调用示例
1 List<ListEntity> lst = new List<ListEntity>(); 2 for (int i = 0; i < 5; i++) 3 4 lst.Add(new ListEntity() 5 6 ID = i.ToString(), 7 Title = "选项" + i, 8 ShowMoreBtn = true, 9 Source = i 10 ); 11 12 this.ucListExt1.SetList(lst);
最后的话
如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control 点个星 星吧
以上是关于c#Winform自定义控件-列表的主要内容,如果未能解决你的问题,请参考以下文章
C# Winform自定义一个控件,一个按钮按下会显示ComboBox一样的下拉列表