陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column
2017-08-25 13:05
369 查看
背景
最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~项目之前使用的是.net/winform。今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆!!!
需求分析
根据需求,需要在ListView控件上面响应/处理 doubleclick 时间,当用户双击某一行时,需要在整个选中的row里面根据其中一个column的值来进行不同的操作。例如,选中第二行,需要根据用户doubleclick的location 得到 双击的是哪个 column,从而转向到不同的业务处理方法。
实现过程
1. 为ListView添加鼠标双击事件
private void PrepareListView() { listView4Exeptions = new System.Windows.Forms.ListView(); listView4Exeptions.GridLines = true; listView4Exeptions.View = View.Details; listView4Exeptions.AllowColumnReorder = true; listView4Exeptions.FullRowSelect = true; listView4Exeptions.Scrollable = true; listView4Exeptions.MultiSelect = false; listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptRec, 0, HorizontalAlignment.Left); listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptCode, 0, HorizontalAlignment.Left); listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptDesc, 130, HorizontalAlignment.Left); listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptRef, 130, HorizontalAlignment.Left); listView4Exeptions.Dock = System.Windows.Forms.DockStyle.Fill; listView4Exeptions.Location = new System.Drawing.Point(0, 0); listView4Exeptions.Name = "List for Exceptions"; listView4Exeptions.Size = new System.Drawing.Size(1000, 250); listView4Exeptions.TabIndex = 0; listView4Exeptions.UseCompatibleStateImageBehavior = false; listView4Exeptions.MouseDoubleClick += listView4Exeptions_MouseDoubleClick; }
2. 在事件处理函数中,首先解析出选中的行,然后再根据获取双击的位置获取column
void listView4Exeptions_MouseDoubleClick(object sender, MouseEventArgs e) { ListView lv = sender as ListView; if (lv == null) return; ListViewHitTestInfo info = lv.HitTest(e.X, e.Y); ListViewItem curItem = info.Item; // 获取双击时选中的row int colIdx = info.Item.SubItems.IndexOf(info.SubItem); // 得到双击的column switch (colIdx) { case "1": // do thing 1 break; case "2": // do thing 2 break; ... ... } }
一点感叹
遥想LZ刚刚工作的时候,正式.net在桌面开发大展宏图之时。。。当时做UI,首先想到的就是winform技术。。。然而时过境迁,随着microsoft接连错过互联网与大数据的浪潮,昔日的女神仿佛已经跌下神坛。。。
扯远了!! 恩,咳咳,真心希望microsoft和.net平台能够借助.net core 2.0之势,在今后再起崛起,引用一句女神的广告语:make .net great again!
乱七八糟写了一大堆,还请各位看官海涵。。最后, 感谢大家的收看,祝大家周末愉快 :)
相关文章推荐
- 关于获取c# 的winform中DataGird控件选中行的值
- ListView中获取checkbox选中事件
- listview长按事件 并获取选中行的值
- ==========2014-04-24=========winform树控件勾选方法 和获取所有选中的
- 使listview下的控件获取点击事件,android:descendantFocusability用法简析
- 菜鸟学Asp.Net——GridView控件之RowDataBind事件中如何获取已绑定的数据
- c# winform 获取listview 选中行某列的值
- Gridview Row事件响应方法无法获取其它UpdatePanel中控件数据的解决办法
- Listview点击事件失效问题解决以及每个Item 子控件获取focus
- Listview获取选中行的值
- GridView控件RowDataBound事件中获取列字段的几种途径
- Android 解决listView item点击事件被其他控件屏蔽的问题
- WinForm系列(一)-控件listview
- GridView控件RowDataBound事件中获取列字段
- ListView获取选中和长按菜单对应的ID
- Listview控件获取当前行的行号和主键
- 关于ExpandableListView.setOnChildClickListener获取不到点击事件
- Android控件ListView获取item中EditText值
- GridView控件RowDataBound事件中获取列字段
- ListView 获取选中和长按菜单对应的 item 的 _id 值