C#控件ListView支持添加TextBox\PictureBox等其他控件
|
功能说明
使用ListView时,希望可以在单元格显示图片或其他控件,发现原生的ListView不支持,于是通过拓展,实现ListView可以显示任意控件的功能,效果如下:
实现方法
本来想着在单元格里面实现控件的自绘的,但是没找到办法,最后是通过在单元格的表面显示对应控件的,浮于表面达到目的。
实现要点如下:
- ListView需要设置OwnerDraw=true,并重载自绘函数OnDrawColumnHeader、OnDrawItem、OnDrawSubItem
- 支持按单元格添加对应的控件,其Parent设置为列表ListView
- 列表界面调整后,包括大小、列表头、滚动等,需重新绘制单元格的控件
实现源码
测试代码
[code]using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace MyListView{ public partial class Form1 : Form { #region 函数 public Form1() { #region 布局初始化 InitializeComponent(); var lv = new Ui.ListViewEx() { Dock = DockStyle.Fill, View = View.Details, GridLines = true, }; this.Controls.Add(lv); var headers = new string[] { "序号", "名称", "年龄", "住址", "荣誉", "岗位", "头像" }; foreach(var v in headers) { lv.Columns.Add(v, 100, HorizontalAlignment.Center); } lv.SetItemHeight(40); for(var i=0; i |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|
|
|
发表于 2024-6-18 20:19:21
举报
回复
分享
|
|
|
|