首页 > 编程语言 >C#中加强ListView控件的功能

C#中加强ListView控件的功能

时间:2022-11-16 15:03:43浏览次数:39  
标签:控件 listView1 C# object Column 列宽 ListView


首先是实现ListView控件的自定义排序,订阅ListView控件的ColumnClick事件

 1


private

  void  listView1_ColumnClick( object  sender, ColumnClickEventArgs e)

 2


{

 3

    if (this.listView1.Columns[e.Column].Tag == null)

 4

        this.listView1.Columns[e.Column].Tag = true;

 5

    bool tabK = (bool)this.listView1.Columns[e.Column].Tag;

 6

    if (tabK)

 7

        this.listView1.Columns[e.Column].Tag = false;

 8

    else

 9

        this.listView1.Columns[e.Column].Tag = true;

10

    this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listView1.Columns[e.Column].Tag);

11

    //指定排序器并传送列索引与升序降序关键字

12

    this.listView1.Sort();//对列表进行自定义排序

13

}

 


排序类的定义:

 1

/**/ ///

 2

///自定义ListView控件排序函数

 3

///

 4

class  ListViewSort : IComparer

 5


{

 6

    private int col;

 7

    private bool descK;

 8


 9

    public ListViewSort()

10

    

{

11

        col = 0;

12

    }

13

    public ListViewSort(int column, object Desc)

14

    

{

15

        descK = (bool)Desc;

16

        col = column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递

17

    }

18

    public int Compare(object x, object y)

19

    

{

20

        int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);

21

        if (descK) return -tempInt;

22

        else return tempInt;

23

    }

24

}

 


上面的ListView控件的自定义排列,即单击ListView控件的标题时进行排序


下面将实现ListView控件的最后一列的去除,即自动调整合适的大小


首先写一个调整ListView控件列宽的函数

1

/**/ ///

2

///自动调整listView控件最后一列的列宽

3

///

4

private   void

 调整LV列宽()

5


{

6

    listView1.ColumnWidthChanged -= new ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged);

7

    备注.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);

8

    listView1.ColumnWidthChanged += new ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged);

9

}

 


上面的备注列是listview控件的最后一列的名称,而listview控件的实例名为listView1


然后订阅ListView控件的ColumnWidthChanged事件,即列宽改变时自动调整列宽

1

/**/ ///

2

/// listview列宽改变事件函数

3

///

4

void  listView1_ColumnWidthChanged( object  sender, ColumnWidthChangedEventArgs e)

5


{

6

    调整LV列宽();

7

}

 


再订阅ListView控件的Size_Change事件,即窗口大小被改变时调整列宽

1

void  listView1_SizeChanged( object  sender, EventArgs e)

2


{

3

    调整LV列宽();

4

}

 


最后在窗体的Shown事件中调整ListView控件的列宽,即第一次显示的时候马上调整列宽

1

private   void  商品管理_Shown( object  sender, EventArgs e)

2


{

3

    调整LV列宽();

4

}

 

标签:控件,listView1,C#,object,Column,列宽,ListView
From: https://blog.51cto.com/u_15739274/5856420

相关文章

  • c#中结构与类的区别
    类与结构的实例比较类与结构的差别如何选择结构还是类一.类与结构的示例比较:结构示例:  publicstructPerson{stringName;int ......
  • Pycharm是什么?主要功能有哪些?
    python编程需要用什么软件?学python编写代码的时候,可以使用的软件有很多,大致分为这几类:编辑器、解释器、终端、包管理、脚本引擎等。但在这其中,我们必不可少的软件就是P......
  • python multiprocessing 多进程
    1获取进程id当我们运行py文件时,该程序的运行就是一个进程,如果在该进程中又创建了其他进程,那么该进程就是主进程,创建的其他进程就是子进程。下面我们通过通过os库中的方法......
  • centos52 的smb.conf 共享文件配置 samba 的配置文件,较老版本
     新建用户x,组为root,用pdbedit-a xxxx命令添加到samba服务中在配置完毕后,可以用testparm/etc/samba/smb.conf来检查是否正确  #ThisisthemainSambaconf......
  • 深入理解css 笔记(8)
      接下来我们讲下响应式设计,最初开发人员通过创建两个网站来解决这个问题。桌面版和移动版,只是假如要兼容越来越多的设备,比如大屏的平板手机,ipadmini.这时候,强制分开的......
  • 【问题解决】ESP32开发板上的CP210xUSB转串口坏了怎么办
        今天居然遇到了主板上的USB转串口芯片坏了的情况!这运气真是。。    还好问题解决了,心理舒服点,这里记录一下,以后大家要是遇到也可以参考。    先吐槽CP210x......
  • XML指南——XML CDATA
    在XML文档中的所有文本都会被解析器解析。只有在CDATA部件之内的文本会被解析器忽略。解析数据XML解析器通常情况下会处理XML文档中的所有文本。当XML元素被解析的时候,XML......
  • docker
    初步认识Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可以可移植的镜像中,然后发布到任何流行的linux或者Windows操作系统的机器上,也可以......
  • TRINAMIC的六轴步进电机控制模块TMCM-6110使用简介及使用场景
      TMCM-6110是一个用于无传感器负载相关电流控制的六轴步进电机控制器/驱动器模块。该设备有Trinamic  StallGuard2™(无传感器失速检测和机械负载测量)、CoolStep......
  • [Typescript] 105. Medium - Placeholder
    typePlaceholder<Textendsstring>=Textends`${string}{${inferP}}${inferREST}`?P|Placeholder<REST>:never;declarefunctionformat<Sextendsstr......