陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column
背景
最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~
项目之前使用的是.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, , HorizontalAlignment.Left);
listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptCode, , HorizontalAlignment.Left);
listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptDesc, , HorizontalAlignment.Left);
listView4Exeptions.Columns.Add(ConstClass._Customer_ExceptRef, , HorizontalAlignment.Left); listView4Exeptions.Dock = System.Windows.Forms.DockStyle.Fill;
listView4Exeptions.Location = new System.Drawing.Point(, );
listView4Exeptions.Name = "List for Exceptions";
listView4Exeptions.Size = new System.Drawing.Size(, );
listView4Exeptions.TabIndex = ;
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 "":
// do thing 1
break; case "":
// do thing 2
break; ...
...
}
}
一点感叹
遥想LZ刚刚工作的时候,正式.net在桌面开发大展宏图之时。。。当时做UI,首先想到的就是winform技术。。。
然而时过境迁,随着microsoft接连错过互联网与大数据的浪潮,昔日的女神仿佛已经跌下神坛。。。
扯远了!! 恩,咳咳,真心希望microsoft和.net平台能够借助.net core 2.0之势,在今后再起崛起,引用一句女神的广告语:make .net great again!
乱七八糟写了一大堆,还请各位看官海涵。。最后, 感谢大家的收看,祝大家周末愉快 :)
陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column的更多相关文章
- 在CTreeCtrl控件点击事件中获取点击的项
网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText ...
- 在asp.net页面上按回车会触发Imagebutton控件的Click事件
原文:在asp.net页面上按回车会触发Imagebutton控件的Click事件 问题: 用asp.net做的aspx页面,无论是否有文本框.下拉框.复选框……获得焦点,只要在当前页面上按一下回车就 ...
- winform listview控件
ListView控件 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置 ...
- C# 动态代码生成控件后其他事件不能获取该控件的值
1.新建web项目,添加两个Button控件,结果如图. 2.Button按钮控件点击事件代码如下 protectedvoid Button1_Click(object sender, EventAr ...
- Winform listview控件、 容器控件
1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格 ...
- winform listview控件、容器控件
ListVies控件主要用于展示数据 常用属性: FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) GridLines:设置行和列之间是否显示网格线. ...
- easyui-datetimebox 控件绑定双击事件实现自动选中当前日期时间
本方法是在不改变原 js 的情况下,通过扩展方法来实现本目的 首先在 datetimebox 控件中扩展一个 绑定双击事件 的方法 $.extend($.fn.datetimebox.methods, ...
- C# Winform ListView控件
一.ListView: 1.视图改为为Detalis: 2.编辑列,每添加一个添加一列,右侧属性Text改列名,停靠位置,列头的长度等等: 3.右侧属性,点开Iteme,添加ListViewItem集 ...
- ==========2014-04-24=========winform树控件勾选方法 和获取所有选中的
http://bbs.bccn.net/thread-197567-1-1.html /// <summary> /// 已选中或取消选中树节点上的复选框时 /// </summar ...
随机推荐
- 005.Getting started with ASP.NET Core MVC and Visual Studio -- 【VS开发asp.net core mvc 入门】
Getting started with ASP.NET Core MVC and Visual Studio VS开发asp.net core mvc 入门 2017-3-7 2 分钟阅读时长 本文 ...
- PB程序源码文件结构 pbl文件 pbd文件
最近公司给了一套PB的源码,一个8.0,一个9.0,让给一个客户做软件整合,之前只听过PB看过别人写代码,为了快速上手,了解了一下PB的文件,记录如下:pbl为pb源码文件 pbd为程序编译后的文件 ...
- Android hook神器frida(一)
运行环境 ● Python – latest 3.x is highly recommended ● Windows, macOS, or Linux安装方法使用命令 sudo pip install ...
- Sqlserver事务备份和还原实例
create database mydb use mydb go create table account( id ), name ), balance float ) go select * fro ...
- input复选框操作的部分高频率使用代码
1. 获取单个checkbox选中项(三种写法): $("input:checkbox:checked").val() 或者 $("input:[type='checkb ...
- 一个简单、易用的Python命令行(terminal)进度条库
eprogress 是一个简单.易用的基于Python3的命令行(terminal)进度条库,可以自由选择使用单行显示.多行显示进度条或转圈加载方式,也可以混合使用. 示例 单行进度条 多行进度条 圆 ...
- 新一代开源Android渠道包生成工具Walle
本文转自:http://tech.meituan.com/android-apk-v2-signature-scheme.html 新一代开源Android渠道包生成工具Walle 新的应用签名方案A ...
- 人工智能(AI)库TensorFlow 踩坑日记之二
上次 踩坑日志之一 遗留的问题终于解决了,所以作者(也就是我)终于有脸出来写第二篇了. 首先还是贴上 卷积算法的示例代码地址 :https://github.com/tensorflow/models ...
- [补档]暑假集训D8总结
%dalao 今天有两位大佬来讲课,meaty来讲了Catalan(本来说好的莫比乌斯反演呢),聪聪来讲Splay呢 至于听课笔记= =,没来得及记= = 不过好不想上树啊,上了树就下不来了 考试 仍 ...
- 如何通过binlog获取我们想要的MySql语句?
前言 MySql的binlog一般用于我们对数据的恢复,以及从数据库对主数据库的复制和更新. 假设此时我们有一个需要查询和读取Mysql最近操作DDL的信息,我们需要怎么处理? 聪明的你可能已经想到了 ...