• 陈年佳酿之


    背景

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

    项目之前使用的是.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!

     乱七八糟写了一大堆,还请各位看官海涵。。最后, 感谢大家的收看,祝大家周末愉快 :)

  • 相关阅读:
    day31-python之内置函数
    day30-python之socket
    day28-python之property
    day27-python之迭代器协议
    day26-python之封装
    day25-python之继承组合
    初识AJAX
    写博客的心得
    web前端常见面试题
    学习网络安全的网站
  • 原文地址:https://www.cnblogs.com/atuotuo/p/7427479.html
Copyright © 2020-2023  润新知