一直做WebForm, 对于Winform也只仅限于偶尔写一些小程序。

最近因为写了一采集网站数据的小程序,里边要对批量采集到的html页面进行编辑

里边用到了ListBox,显示的时候发现显示文件路径太长了,我只需要文件名就够了,

但是还希望能够有个value值来保存路径,经查看,listbox的items只是一个objectcollection

并没有value,上网爬了一番,发现一朋友写了既然是object,那么应该是可以让我们自己定义。

于是乎自己写了一个Item类:

MyListItem
 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);//注:这里可以不用自定义,用标准事件的委托即可

添加事件后的MyListItem
 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的添加选项值,并增加双击事件相关推荐

  1. WinForm中的ListBox和ComboBox的使用

    黑马程序员--鄢振东 ---------------------- ASP.Net+Unity3D游戏开发..Net培训.期待与您交流! ---------------------- 第一个是comb ...

  2. Winform中实现对照片添加文字和图片水印(附代码下载)

    场景 项目运行效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建 ...

  3. React开发(141):react中ref为class添加ref

  4. React开发(140):react中ref为dom添加ref

  5. python列表中的字典如何添加键值对_在Python中将键值对添加到字典中

    Python字典是键值对的无序集合.在本教程中,我们将看到如何将新的键值对添加到已经定义的字典中.以下是我们可以使用的两种方法. 将新键分配为下标 我们通过使用新键作为下标并为其分配值来向字典添加新元 ...

  6. 设置mysql中自增列的初始值和增加步长

    1.设置 (1)设置起始值 SET auto_increment_offset = n; n就是起始值 (2)设置步长 SET auto_increment_increment = m; m就是步长. ...

  7. 浅学C#(17)——Winform程序设计之ListBox、CheckListBox、ComboBox、ListView、ImageList、TabControl、PictureBox...

    ListBox 常用属性 SelectedIndex 表示选中选项的基于0的索引,若选中多项,则是第一项的索引 ColumnWidth 在包含多个列的列表框中指定列的宽度 Items 包含列表框中的所 ...

  8. c#(winform)中ComboBox和ListBox添加项完全解决

    c#(winform)中ComboBox和ListBox添加项完全解决 c#(winform)中ComboBox和ListBox添加项完全解决 刚开始用.net 的winform开发,发现好些控件都很 ...

  9. winform 中listBox控件绑定list类型数据源,并设置DisplayMember

    在WinForm中,您可以将ListBox控件绑定到List类型的数据源.为此,您需要将List数据源设置为ListBox的DataSource属性,然后设置ListBox的DisplayMember ...

最新文章

  1. [Leetcode] Merge Sorted Array 合并数组
  2. 进程间通讯,临界区,互斥
  3. HashMap源码分析1:添加元素
  4. Git 系列(二):初步了解 Git
  5. Go 还是需要泛型的
  6. 传统公司部署OpenStack(t版)简易介绍(九)——控制台部署
  7. 看过这么多爆文,依旧走不好异步编程这条路?​
  8. linux vmware时间问题
  9. FireFox2和FireFox3共存解决方案(附完整图解)
  10. Android中的数据编码,Android与服务端数据传输的编码处理
  11. vue-pdf分页预览
  12. Navicat基础mysql语法
  13. 农商银行招聘计算机人员考什么,农商银行招聘考试考什么内容
  14. 一个链表L 一个链表P 包含升序排列的整数 操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素
  15. VSCode 配置 python环境 相对齐全 有遇到问题欢迎投稿哈
  16. 单元格中添加自适应斜线
  17. 淘宝直播赚佣金项目玩法
  18. 【笔记】H5跳转手机应用商店(指定应用页/第三方应用商店)
  19. 护眼灯色温和显色指数哪个重要?台灯显色和色温的关系是什么
  20. 百度细雨算法2.0详解,规避细雨算法解决方法

热门文章

  1. 天地图,js 4.0 api,简单调用,高手请绕行
  2. 简述Python中的break和continue的区别
  3. C# DataGridView 的UserDeletingRow事件,删除
  4. STM32-内存管理
  5. 2014年02月16日
  6. 压力测试工具Ab简介
  7. DropDownList控件的AutoPostBack属性的问题 选择后,值也跟着刷新
  8. 什么时候用activity什么时候用fragment
  9. Activity栈管理(二):Launch Mode
  10. Android 实现网页账号自动登录