龙空技术网

63.C# ListView控件

数字双碳王亮 230

前言:

今天各位老铁们对“netmessagebox换行”大概比较关心,大家都想要分析一些“netmessagebox换行”的相关知识。那么小编也在网摘上网罗了一些有关“netmessagebox换行””的相关知识,希望同学们能喜欢,各位老铁们一起来学习一下吧!

摘要

Windows 窗体 ListView 控件显示带图标的项列表。 你可以使用列表视图创建类似 Windows 资源管理器右窗格的用户界面。 该控件有四种视图模式:LargeIcon、SmallIcon、List 和 Details。

正文

属性

CheckBoxes

获取或设置一个值,该值指示控件中各项的旁边是否显示复选框。

CheckedIndices

获取控件中当前选中项的索引。

CheckedItems

获取控件中当前选中的项。

Columns

获取控件中显示的所有列标题的集合。

FullRowSelect

获取或设置一个值,该值指示单击某项是否选择其所有子项。

GridLines

获取或设置一个值,该值指示:在包含控件中项及其子项的行和列之间是否显示网格线。

GroupImageList

当前设置 GroupIcon 映像列表。

Groups

获取分配给控件的 ListViewGroup 对象的集合。

Items

获取包含控件中所有项的集合。

LabelEdit

获取或设置一个值,该值指示用户是否可以编辑控件中项的标签。

LabelWrap

获取或设置一个值,该值指示当项作为图标在控件中显示时,项标签是否换行。

SelectedItems

获取在控件中选定的项。

ShowGroups

获取或设置一个值,该值指示是否以分组方式显示项。

ShowItemToolTips

获取或设置一个值,该值指示是否为 ListViewItem 中包含的 ListView 对象显示工具提示。

SmallImageList

获取或设置 ImageList,当项在控件中显示为小图标时使用。

Sorting

获取或设置控件中项的排序顺序。

StateImageList

获取或设置与控件中应用程序定义的状态相关的 ImageList。

SmallImageList

获取或设置 ImageList,当项在控件中显示为小图标时使用。

Sorting

获取或设置控件中项的排序顺序。

StateImageList

获取或设置与控件中应用程序定义的状态相关的 ImageList。

LargeIcon 模式在项文本旁边显示大图标;如果控件足够大,项将出现在多列中。

SmallIcon 模式是相同的,只是它显示的是小图标。

List 模式显示小图标,但始终位于单列中。

Details 模式在多列中显示项。

常用Detials设置

lstDetail.View = View.Details;//设置视图

添加列

//添加列lstDetail.Columns.Add("设备号", 120, HorizontalAlignment.Left);lstDetail.Columns.Add("设备名称", 150, HorizontalAlignment.Left);lstDetail.Columns.Add("当前状态", 150, HorizontalAlignment.Left);lstDetail.Columns.Add("运行时长", 200, HorizontalAlignment.Left);

添加行

//添加行var item = new ListViewItem();item.Text = "A0001";//设备号item.SubItems.Add("S7-1200"); //设备名称item.SubItems.Add("RUN"); //当前状态item.SubItems.Add("500"); //运行时长//在批量载入时,尽量使用BeginUpdate,EndUpdate,减少刷新lstDetail.BeginUpdate();lstDetail.Items.Add(item);lstDetail.Items[lstDetail.Items.Count - 1].EnsureVisible();//滚动到最后lstDetail.EndUpdate();

给Detail添加图标

ImageList控件(存储图像控件)用于存储图像资源,然后在控件上显示出来,这样就简化了对图像的管理。ImageList 控件的主要属性是 Images,它包含关联控件将要使用的图片。每个单独的图像可通过其索引值或其键值来访问。

添加图片

lstDetail.SmallImageList = simgs;//给listview 绑定小图标列表item.ImageIndex = 0;//指定对应的图标,用索引

给列表增加勾选框

lstDetail.CheckBoxes = true;lstDetail.FullRowSelect = true;//整行选中//添加行lstDetail.BeginUpdate();for (int i = 0; i < 100; i++){    var item = new ListViewItem();    item.Text = "A000"+i.ToString();//设备号    item.SubItems.Add("S7-1200"); //设备名称    item.SubItems.Add("RUN"); //当前状态    item.SubItems.Add(new Random().Next(0,1000).ToString()); //运行时长    item.ImageIndex = 0;//指定对应的图标,用索引    lstDetail.Items.Add(item);}lstDetail.EndUpdate();
private void btnGetSelected_Click(object sender, EventArgs e){    StringBuilder sb = new StringBuilder();    for (int i = 0; i < lstDetail.Items.Count; i++)    {        if (lstDetail.Items[i].Checked)        {            sb.AppendLine(lstDetail.Items[i].Text);        }    }    MessageBox.Show(sb.ToString());}StringBuilder sb = new StringBuilder();foreach (ListViewItem item in lstDetail.CheckedItems){    sb.AppendLine(item.Text);    }MessageBox.Show(sb.ToString());

列头排序

public class ListViewItemComparer : IComparer{    /// <summary>    /// 指定按照哪个列排序    /// </summary>    private int ColumnToSort;    /// <summary>    /// 指定排序的方式    /// </summary>    private System.Windows.Forms.SortOrder OrderOfSort;    /// <summary>    /// 声明CaseInsensitiveComparer类对象    /// </summary>    private System.Collections.CaseInsensitiveComparer ObjectCompare;    /// <summary>    /// 构造函数    /// </summary>    public ListViewItemComparer()    {        // 默认按第一列排序        ColumnToSort = 0;        // 排序方式为不排序        OrderOfSort = System.Windows.Forms.SortOrder.None;        // 初始化CaseInsensitiveComparer类对象        ObjectCompare = new System.Collections.CaseInsensitiveComparer();    }    /// <summary>    /// 重写IComparer接口.    /// </summary>    /// <param name="x">要比较的第一个对象</param>    /// <param name="y">要比较的第二个对象</param>    /// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>    public int Compare(object x, object y)    {        int compareResult;        System.Windows.Forms.ListViewItem listviewX, listviewY;        // 将比较对象转换为ListViewItem对象        listviewX = (System.Windows.Forms.ListViewItem)x;        listviewY = (System.Windows.Forms.ListViewItem)y;        string xText = listviewX.SubItems[ColumnToSort].Text;        string yText = listviewY.SubItems[ColumnToSort].Text;        int xInt, yInt;        if (int.TryParse(xText, out xInt) && int.TryParse(yText, out yInt)) //是否全为数字        {            //比较数字            compareResult = CompareInt(xInt, yInt);        }        else        {            //比较对象            compareResult = ObjectCompare.Compare(xText, yText);        }        // 根据上面的比较结果返回正确的比较结果        if (OrderOfSort == System.Windows.Forms.SortOrder.Ascending)        {            // 因为是正序排序,所以直接返回结果            return compareResult;        }        else if (OrderOfSort == System.Windows.Forms.SortOrder.Descending)        {            // 如果是反序排序,所以要取负值再返回            return (-compareResult);        }        else        {            // 如果相等返回0            return 0;        }    }    /// <summary>    /// 比较两个数字的大小    /// </summary>    /// <param name="ipx">要比较的第一个对象</param>    /// <param name="ipy">要比较的第二个对象</param>    /// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>    private int CompareInt(int x, int y)    {        if (x > y)        {            return 1;        }        else if (x < y)        {            return -1;        }        else        {            return 0;        }    }    /// <summary>    /// <summary>    /// 获取或设置按照哪一列排序.    /// </summary>    public int SortColumn    {        set        {            ColumnToSort = value;        }        get        {            return ColumnToSort;        }    }    /// <summary>    /// 获取或设置排序方式.    /// </summary>    public System.Windows.Forms.SortOrder Order    {        set        {            OrderOfSort = value;        }        get        {            return OrderOfSort;        }    } }
private void lstDetail_ColumnClick(object sender, ColumnClickEventArgs e){    if(e.Column== comparer.SortColumn)    {        if (comparer.Order == SortOrder.Ascending)        {            comparer.Order = SortOrder.Descending;        }        else        {            comparer.Order = SortOrder.Ascending;        }    }    else    {        comparer.SortColumn = e.Column;        comparer.Order = SortOrder.Ascending;    }    lstDetail.Sort();}
ListViewItemComparer comparer=new ListViewItemComparer();public FrmMain(){    InitializeComponent();    lstDetail.ListViewItemSorter = comparer;}

标签: #netmessagebox换行