开发手记之-在Winform中为ListBox的添加选项值,并增加双击事件
一直做WebForm, 对于Winform也只仅限于偶尔写一些小程序。
最近因为写了一采集网站数据的小程序,里边要对批量采集到的html页面进行编辑
里边用到了ListBox,显示的时候发现显示文件路径太长了,我只需要文件名就够了,
但是还希望能够有个value值来保存路径,经查看,listbox的items只是一个objectcollection
并没有value,上网爬了一番,发现一朋友写了既然是object,那么应该是可以让我们自己定义。
于是乎自己写了一个Item类:
1 public class myListItem : Object
2 {
3 private string _name;
4 private string _value;
5
6 public myListItem()
7 {
8
9 }
10 public myListItem(string name, string value)
11 {
12 _name = name;
13 _value = value;
14 }
15 public string Name
16 {
17 get { return _name; }
18 set { _name = value; }
19 }
20 public string Value
21 {
22 get { return _value; }
23 set { _value = value; }
24 }
25 public override string ToString()
26 {
27 return _name;
28 }
29 }
30
在绑定数据的时候,我用了对象数组:
myListItem[] items = generateItems(files);
this.listFiles.DataSource = items;
操作的时候,我们可以把ListBox的selectedItem转为MyListItem类型,从而取得Name和Value值
MyListItem item=this.listFiles.SelectedItem;
item.Name...
item.Value...
后边用的时候发现,有些页面我不需要批量编辑,想双击某一个Item就把它从ListBox中删除,于是添加了双击事件。
首先自定义委托
public delegate void ItemDoubleClickEvent(object sender, EventArgs e);//注:这里可以不用自定义,用标准事件的委托即可
1 public class myListItem : Object
2 {
3 private string _name;
4 private string _value;
5 public event ItemDoubleClickEvent OnItemDoubleClick;
6
7 public void DoubleClick()
8 {
9 if (OnItemDoubleClick != null)
10 {
11 OnItemDoubleClick(this,new EventArgs());
12 }
13 }
14 public myListItem()
15 {
16
17 }
18 public myListItem(string name, string value)
19 {
20 _name = name;
21 _value = value;
22 }
23 public string Name
24 {
25 get { return _name; }
26 set { _name = value; }
27 }
28 public string Value
29 {
30 get { return _value; }
31 set { _value = value; }
32 }
33 public override string ToString()
34 {
35 return _name;
36 }
37 }
38
在绑定数据的之后,给双击事件加上处理程序,删除Item部分就写在事件处理程序里:
myListItem[] items = generateItems(files);
this.listFiles.DataSource = items;
foreach (object o in this.listFiles.Items)
{
myListItem item = o as myListItem;
item.OnItemDoubleClick += new ItemDoubleClickEvent(item_OnItemDoubleClick);
}
然后在ListBox的双击事件中,调用MyListItem的DoubleClick(),引发双击事件。
myListItem item = this.listFiles.SelectedItem as myListItem;
item.DoubleClick();
======================
后记:其实在ListBox的双击事件里,我们完全可以删除一个Item,之所以没有那样写,
是想通过一个需求,一个实例来和大家一起分享事件的工作原理,希望对大家有所裨益。
这边写的这个整站采集的工具,如有人感兴趣,可以拿出来大家分享。
转载于:https://www.cnblogs.com/neilvension/archive/2009/07/15/1524254.html
开发手记之-在Winform中为ListBox的添加选项值,并增加双击事件相关推荐
- WinForm中的ListBox和ComboBox的使用
黑马程序员--鄢振东 ---------------------- ASP.Net+Unity3D游戏开发..Net培训.期待与您交流! ---------------------- 第一个是comb ...
- Winform中实现对照片添加文字和图片水印(附代码下载)
场景 项目运行效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建 ...
- React开发(141):react中ref为class添加ref
- React开发(140):react中ref为dom添加ref
- python列表中的字典如何添加键值对_在Python中将键值对添加到字典中
Python字典是键值对的无序集合.在本教程中,我们将看到如何将新的键值对添加到已经定义的字典中.以下是我们可以使用的两种方法. 将新键分配为下标 我们通过使用新键作为下标并为其分配值来向字典添加新元 ...
- 设置mysql中自增列的初始值和增加步长
1.设置 (1)设置起始值 SET auto_increment_offset = n; n就是起始值 (2)设置步长 SET auto_increment_increment = m; m就是步长. ...
- 浅学C#(17)——Winform程序设计之ListBox、CheckListBox、ComboBox、ListView、ImageList、TabControl、PictureBox...
ListBox 常用属性 SelectedIndex 表示选中选项的基于0的索引,若选中多项,则是第一项的索引 ColumnWidth 在包含多个列的列表框中指定列的宽度 Items 包含列表框中的所 ...
- c#(winform)中ComboBox和ListBox添加项完全解决
c#(winform)中ComboBox和ListBox添加项完全解决 c#(winform)中ComboBox和ListBox添加项完全解决 刚开始用.net 的winform开发,发现好些控件都很 ...
- winform 中listBox控件绑定list类型数据源,并设置DisplayMember
在WinForm中,您可以将ListBox控件绑定到List类型的数据源.为此,您需要将List数据源设置为ListBox的DataSource属性,然后设置ListBox的DisplayMember ...
最新文章
- [Leetcode] Merge Sorted Array 合并数组
- 进程间通讯,临界区,互斥
- HashMap源码分析1:添加元素
- Git 系列(二):初步了解 Git
- Go 还是需要泛型的
- 传统公司部署OpenStack(t版)简易介绍(九)——控制台部署
- 看过这么多爆文,依旧走不好异步编程这条路?​
- linux vmware时间问题
- FireFox2和FireFox3共存解决方案(附完整图解)
- Android中的数据编码,Android与服务端数据传输的编码处理
- vue-pdf分页预览
- Navicat基础mysql语法
- 农商银行招聘计算机人员考什么,农商银行招聘考试考什么内容
- 一个链表L 一个链表P 包含升序排列的整数 操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素
- VSCode 配置 python环境 相对齐全 有遇到问题欢迎投稿哈
- 单元格中添加自适应斜线
- 淘宝直播赚佣金项目玩法
- 【笔记】H5跳转手机应用商店(指定应用页/第三方应用商店)
- 护眼灯色温和显色指数哪个重要?台灯显色和色温的关系是什么
- 百度细雨算法2.0详解,规避细雨算法解决方法