http://www.hzhcontrols.com

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

GitHub:https://github.com/kwwwvagaa/NetWinformControl

码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492 (四十三)c#Winform自定义控件-Listview-HZHControls

麻烦博客下方点个【推荐】,谢谢

NuGet

Install-Package HZH_Controls

目录

https://www.cnblogs.com/bfyx/p/11364884.html

用处及效果

使用分页控件效果

(四十三)c#Winform自定义控件-Listview-HZHControls

不使用分页控件效果

(四十三)c#Winform自定义控件-Listview-HZHControls

准备工作

我们需要元素控件,需要列表控件,另外为了具有更好的扩展性,元素控件实现接口,方便进行扩展

我们用到了分页控件,如果你还不了解,请移步查看

(十二)c#Winform自定义控件-分页控件

我们这里的元素控件用到圆角,故继承基类控件UCControlBase,如果不了解,请移步查看

(一)c#Winform自定义控件-基类控件

开始

添加一个接口,用来约束元素控件

 1  public interface IListViewItem
 2     {
 3         /// <summary>
 4         /// 数据源
 5         /// </summary>
 6         object DataSource { get; set; }
 7         /// <summary>
 8         /// 选中项事件
 9         /// </summary>
10         event EventHandler SelectedItemEvent;
11         /// <summary>
12         /// 选中处理,一般用以更改选中效果
13         /// </summary>
14         /// <param name="blnSelected">是否选中</param>
15         void SetSelected(bool blnSelected);
16     }

添加一个元素控件,命名UCListViewItem,我们这里继承基类控件UCControlBase,实现接口IListViewItem

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Drawing;
 5 using System.Data;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace HZH_Controls.Controls
11 {
12     [ToolboxItem(false)]
13     public partial class UCListViewItem : UCControlBase, IListViewItem
14     {
15         private object m_dataSource;
16         public object DataSource
17         {
18             get
19             {
20                 return m_dataSource;
21             }
22             set
23             {
24                 m_dataSource = value;
25                 lblTitle.Text = value.ToString();
26             }
27         }
28 
29         public event EventHandler SelectedItemEvent;
30         public UCListViewItem()
31         {
32             InitializeComponent();
33             lblTitle.MouseDown += lblTitle_MouseDown;
34         }
35 
36         void lblTitle_MouseDown(object sender, MouseEventArgs e)
37         {
38             if (SelectedItemEvent != null)
39             {
40                 SelectedItemEvent(this, e);
41             }
42         }
43 
44         public void SetSelected(bool blnSelected)
45         {
46             if (blnSelected)
47                 this.FillColor = Color.FromArgb(255, 247, 245);
48             else
49                 this.FillColor = Color.White;
50             this.Refresh();
51         }
52     }
53 }
 1 namespace HZH_Controls.Controls
 2 {
 3     partial class UCListViewItem
 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.lblTitle = new System.Windows.Forms.Label();
32             this.SuspendLayout();
33             // 
34             // lblTitle
35             // 
36             this.lblTitle.Dock = System.Windows.Forms.DockStyle.Fill;
37             this.lblTitle.Location = new System.Drawing.Point(0, 0);
38             this.lblTitle.Name = "lblTitle";
39             this.lblTitle.Size = new System.Drawing.Size(107, 96);
40             this.lblTitle.TabIndex = 0;
41             this.lblTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
42             // 
43             // UCListViewItem
44             // 
45             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
46             this.BackColor = System.Drawing.Color.Transparent;
47             this.Controls.Add(this.lblTitle);
48             this.FillColor = System.Drawing.Color.White;
49             this.IsRadius = true;
50             this.IsShowRect = true;
51             this.Name = "UCListViewItem";
52             this.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232)))));
53             this.Size = new System.Drawing.Size(107, 96);
54             this.ResumeLayout(false);
55 
56         }
57 
58         #endregion
59 
60         private System.Windows.Forms.Label lblTitle;
61     }
62 }
View Code

相关文章: