背景

最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~

项目之前使用的是.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的更多相关文章

  1. 在CTreeCtrl控件点击事件中获取点击的项

    网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText ...

  2. 在asp.net页面上按回车会触发Imagebutton控件的Click事件

    原文:在asp.net页面上按回车会触发Imagebutton控件的Click事件 问题: 用asp.net做的aspx页面,无论是否有文本框.下拉框.复选框……获得焦点,只要在当前页面上按一下回车就 ...

  3. winform listview控件

    ListView控件 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置 ...

  4. C# 动态代码生成控件后其他事件不能获取该控件的值

    1.新建web项目,添加两个Button控件,结果如图. 2.Button按钮控件点击事件代码如下 protectedvoid Button1_Click(object sender, EventAr ...

  5. Winform listview控件、 容器控件

    1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格 ...

  6. winform listview控件、容器控件

    ListVies控件主要用于展示数据 常用属性: FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) GridLines:设置行和列之间是否显示网格线. ...

  7. easyui-datetimebox 控件绑定双击事件实现自动选中当前日期时间

    本方法是在不改变原 js 的情况下,通过扩展方法来实现本目的 首先在 datetimebox 控件中扩展一个 绑定双击事件 的方法 $.extend($.fn.datetimebox.methods, ...

  8. C# Winform ListView控件

    一.ListView: 1.视图改为为Detalis: 2.编辑列,每添加一个添加一列,右侧属性Text改列名,停靠位置,列头的长度等等: 3.右侧属性,点开Iteme,添加ListViewItem集 ...

  9. ==========2014-04-24=========winform树控件勾选方法 和获取所有选中的

    http://bbs.bccn.net/thread-197567-1-1.html /// <summary> /// 已选中或取消选中树节点上的复选框时 /// </summar ...

随机推荐

  1. 如何通过css设置表格居中

    CSS控制整个表格居中,不只是让表格里的文字居中,是整个表格居中1. 不用table的Align="center",要用CSS实现2. 不加<center></c ...

  2. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...

  3. POJ 2152 fire / SCU 2977 fire(树型动态规划)

    POJ 2152 fire / SCU 2977 fire(树型动态规划) Description Country Z has N cities, which are numbered from 1 ...

  4. 跨域访问http接口的使用

    最近在弄一个sip网页集成版软电话,为了功能的完善,呼叫中心的工作人员为我们提供了一个http接口,我先在网页中直接打开分析了一下他的返回值,然后又放到js中去访问,结果一放到js中一访问就发现浏览器 ...

  5. CentOS 6.5 下安装 Redis 2.8.7(转载)

    wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make ...

  6. neo4j 数据库导入导出

    工作中需要将 A 图数据库的数据完全导出,并插入到 B 图数据库中.查找资料,好多都是通过导入,导出 CSV 文件来实现.然而,经过仔细研究发现,导出的节点/关系 都带有 id 属性 ,因为 A B ...

  7. 小白也能看懂的插件化DroidPlugin原理(二)-- 反射机制和Hook入门

    前言:在上一篇博文<小白也能看懂的插件化DroidPlugin原理(一)-- 动态代理>中详细介绍了 DroidPlugin 原理中涉及到的动态代理模式,看完上篇博文后你就会发现原来动态代 ...

  8. Nginx文档-初学者指南

    原文档: http://nginx.org/en/docs/beginners_guide.html 译者:Oopsguy 本指南旨在介绍nginx基本内容和一些在Nginx上可以完成的简单任务.这里 ...

  9. 分页功能的实现——Jdbc && JSP

    @目录 什么是分页 ? 两个子模块功能的问题分析 和 解决方案 有条件查和无条件查询的影响 和 解决方案 项目案例: mysql + commons-dbutils+itcast-tools+Base ...

  10. 计算机网络之应用层_part -1

    应用层协议原理 一.网络应用程序体系结构 网络应用程序体系结构是由程序研发者设计的,规定了如何在各种端系统中组织该应用程序,主要流行的有两种: 1.客户--服务器体系结构: 有一个总是打开的主机(称为 ...