上一篇:Visual C#命名空间详解 >>
C#中加强ListView控件的功能
| private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) { if (this.listView1.Columns[e.Column].Tag == null) this.listView1.Columns[e.Column].Tag = true; bool tabK = (bool)this.listView1.Columns[e.Column].Tag; if (tabK) this.listView1.Columns[e.Column].Tag = false; else this.listView1.Columns[e.Column].Tag = true; this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listView1.Columns[e.Column].Tag); //指定排序器并传送列索引与升序降序关键字 this.listView1.Sort();//对列表进行自定义排序 } |
排序类的定义:
| /// ///自定义ListView控件排序函数 /// class ListViewSort : IComparer { private int col; private bool descK; public ListViewSort() { col = 0; } public ListViewSort(int column, object Desc) { descK = (bool)Desc; col = column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递 } public int Compare(object x, object y) { int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text); if (descK) return -tempInt; else return tempInt; } } |
上面的ListView控件的自定义排列,即单击ListView控件的标题时进行排序
下面将实现ListView控件的最后一列的去除,即自动调整合适的大小
首先写一个调整ListView控件列宽的函数
| /// ///自动调整listView控件最后一列的列宽 /// /// /// private void 调整LV列宽() { listView1.ColumnWidthChanged -= new ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged); 备注.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize); listView1.ColumnWidthChanged += new ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged); } |
上面的备注列是listview控件的最后一列的名称,而listview控件的实例名为listView1
然后订阅ListView控件的ColumnWidthChanged事件,即列宽改变时自动调整列宽
| /// /// listview列宽改变事件函数 /// /// /// void listView1_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e) { 调整LV列宽(); } |
再订阅ListView控件的Size_Change事件,即窗口大小被改变时调整列宽
| void listView1_SizeChanged(object sender, EventArgs e) { 调整LV列宽(); } |
最后在窗体的Shown事件中调整ListView控件的列宽,即第一次显示的时候马上调整列宽
| private void 商品管理_Shown(object sender, EventArgs e) { 调整LV列宽(); } |
下一篇:用托管C++编写自定义Web组合控件 >>
相关文章:
- · 如何在C#中播放AVI短片并使背景透明
- · 主流测试:vista你为游戏准备好了吗?
- · windows xp和vista双系统安装不完全攻略
- · 用C#开发Windows服务监控系统使用
- · C#中父窗口和子窗口之间实现控件互操作
- · Visual C# 2.0泛型编程基础
- · Visual C#泛型学习之泛型介绍
- · 为非主流主机优化 打造最强vista 5456
- · C#与松下FP∑可编程控制器的通信
- · 谈谈购买win vista的十大理由及放弃原因
- · Visual C#使用DirectX实现视频播放
- · Visual C#程序员面试基础问题和答案
- · 用户需注意!选购“vista笔记本”要谨慎
- · intel透露最新windows vista认证要求
- · 比xp做得更好:寻找windows vista漏洞
- · 通过包技术扩展Visual Studio 2005
- · 手动快速卸载windows vista系统的方法
- · .Net Framework3.0 实践纪实之布局
- · 观点:.NET发展中的几个失误
- · sata串口硬盘windows vista驱动安装实录
- · 基于AJAX.NET技术的DataGrid控件开发
- · 在.NET下多层架构企业管理系统的开发
- · windows vista系统应用程序安装测试情况
- · vista显存需求有大学问 intel老大将不保
- · 在.net中利用委托实现窗体间通信
- · 抛弃win xp!细数升级vista的五大理由
- · 激活windows vista 启动logo画面
- · 关于.NET动态代理的介绍和应用简介
- · 深度体验:windows vista最酷的五大功能
- · windows vista新功能介绍之防误删除技术
- · .NET 2.0中的企业库异常处理块简述
- · wei制度曝光:windows vista界面分五等
- · vista主题确定:aero glass风格最终获胜
- · 全新技术:windows vista系统新技术两则
- · 在.NET 2.0 中使用自定义事务操作
- · 合理攒机:如何满足vista系统的硬件需求
- · 体验windows vista图标设计功能
- · .Net Framework 2.0范型的反射使用
