ListView的操作

2023-11-19

转自http://blog.sina.com.cn/s/blog_43eb83b90100mhrs.html
这一篇对我也不错http://blog.csdn.net/xiaohan2826/article/details/8603015

小白叔叔ListView用法总结C#

  (2010-11-23 10:29:04)
标签: 

杂谈

分类: aspc#及.net
ListView是个较为复杂的控件
网上教程写的很乱,C#中文资料太匮乏了,小白叔叔觉得有必要自己出一份了。
1.定义
把它拽进来,系统会自动在Designer.cs里添加一个  this.listView1 = new System.Windows.Forms.ListView();
2.初始化,确定模式,确定列
InitializeComponent()里系统首先自动完成对它的初始化操作
而用户自定义的初始化操作我建议写在Form构造函数里跟在InitializeComponent()后面。
原因是一旦listView有变动,系统自动调整InitializeComponent()内容,可能会自动删除掉用户写的部分。
this.listView1.Columns.Add("学生序号");
this.listView1.Columns.Add("学生姓名");
this.listView1.Columns.Add("学生学号");
这些是主要的,确定一共几个列
this.listView1.View = System.Windows.Forms.View.Details;
如果不写这句,那么加的列压根显示不出来。必须写。
我们先研究Details模式下的ListView用法,要这样对listView的View属性赋值。
很多教程都直接写this.listView1.View =View.Details;
尽管using System.Windows.Forms 但不管用。还是写全吧。
System.Windows.Forms.View是个枚举 public enum View;
LargeIcon 每个项都显示为一个最大化图标,在它的下面有一个标签。
Details 每个项显示在不同的行上,并带有关于列中所排列的各项的进一步信息。最左边的列包含一个小图标和标签,后面的列包含应用程序指定的子项。列显示一个标头,它可以显示列的标题。用户可以在运行时调整各列的大小。
SmallIcon 每个项都显示为一个小图标,在它的右边带一个标签。
List 每个项都显示为一个小图标,在它的右边带一个标签。各项排列在列中,没有列标头。
Tile 每个项都显示为一个完整大小的图标,在它的右边带项标签和子项信息。显示的子项信息由应用程序指定。此视图仅在下面的平台上受支持:Windows XP 和 Windows Server 2003 系列。在之前的操作系统上,此值被忽略,并且 ListView 控件在 LargeIcon 视图中显示。
lv.GridLines = true ; file://显示各个记录的分隔线
lv.FullRowSelect = true ; file://要选择就是一行
lv.View = View.Details ; file://定义列表显示的方式
lv.Scrollable = true ; file://需要时候显示滚动条
lv.MultiSelect = false ; // 不可以多行选择
listView1.FullRowSelect = true;
this.listView1.GridLines = true;
listView1.LabelEdit = true;
// Allow the user to rearrange columns.
listView1.AllowColumnReorder = true;
// Display check boxes.
listView1.CheckBoxes = true;
listView1.Sorting = SortOrder.Ascending;
//Create three items and three sets of subitems for each item.
另外还有很多自定义属性可以配,什么选中啦,线条啦,自己试试吧
 
 
默认的列宽不大,标题头显示总不全
 
listView1.Columns[0].Width = 100;
listView1.Columns[1].Width = 100;
 
Columns数组本身可以引用每个列
3. 增加行
增加行操作主要分成两种,一种是直接字符串添加,一种是借助ListViewItem对象添加
一.直接添加法
this.listView1.Items.Add("A1");  
这是指给这个控件表添加一个新的行,同时把新行的第一列数据设为A1,此时这个新行内的元素集合就是this.listView1.Item[0]
this.listView1.Items[0].SubItems.Add("A2");
这是给刚添加的第一行,也就是this.listView1.Item[0]添加第二列数据A2.如果说Items在行的层次增加,Item[i].SubItems才真正对应单元格操作。
this.listView1.Items[0].SubItems.Add("A3");
此时第一行添加工作结束,白叔叔告你,第一行内容为 A1---A2---A3
this.listView1.Items.Add("B1");  此时再Add,相当于加了第二行数据,同时添加了第二行第一列的单元格内容。
this.listView1.Items[1].SubItems.Add("B2"); Items表示行,所以第二行就是Items[1],行标从0起始。
this.listView1.Items[1].SubItems.Add("B3");
第二行结束,内容B1---B2---B3
二.ListViewItem间接添加法。
方法是先创建一个行对象
再把这个行对象添加给this.listView1.Items
ListViewItem li的初始化又有两种方法,大同小异
一种是
ListViewItem li=new ListViewItem("A1");
另一种是
ListViewItem li=new ListViewItem();
li.Text="A1";
作用是相同的,白叔叔不骗你。
都是初始化一个“行对象”,同时把这个行对象的第一列单元格初始化为"A1"
li.SubItems.Add("abc");
li.SubItems.Add("cde");
然后把第二列和第三列内容加上。
this.listView1.Items.Add(li); 这句话在前几句话之前也行,之后也行
可以先加进listView再添加子项,也可以都加全了子项再加进listView
li可以复用,不断初始化成新的行进行添加。
 
关于项的选取和数据的采集
 
首先,现阶段ListView项的选取分成两类
一种是用左键选取,适用的方法是SelectedItems和SelectedIndices
另一种是通过复选框勾选的选取CheckedItems我没用过,暂时不讨论,但事实上类同第一种

左键选取

1.首先要判断有没有项被选中变蓝,如果不判断那么用到SelectedItem[i]时会因为没有合适结果报错。
 if (this.listView1.SelectedItems.Count > 0)

2.  SelectedItems是获取选中的行的集合,也就是说支持多行选择,它是多行的集合。
this.textBox2.Text = this.listView1.SelectedItems[0].Text;
这里的索引[0]并不是指原列表的第一行,而是将全体被选中行当做一个集合,在被选中行中的第一被选行。
此时返回的是该行第一列的单元格内容。
this.textBox2.Text = this.listView1.SelectedItems[0].SubItems[0].Text;
用SubItems[0]两者得到的结果是一样的,也是第一被选行的第一列。
this.textBox2.Text = this.listView1.SelectedItems[0].SubItems[1].Text;
上面是第一被选行的第二列,以此类推。

3.  SelectedIndices是返回选中行的索引值int
this.listView1.SelectedIndices[i]也是将选中行当做整体,用i去定位。

 
如果只对选取单行做获取判断listView1.FocusedItem.Text估计效率更高,自己试试,叔叔不写了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ListView的操作 的相关文章

  • 如何更改JavaFX中ListView的字体大小?

    我尝试了这个建议http forums sun com thread jspa threadID 5421037 http forums sun com thread jspa threadID 5421037但找不到风格 还有其他办法吗
  • c# listview取消选择项目

    我正在开发一个 Windows 应用程序 它有一个包含一堆项目的 ListView 当用户单击某个项目时 应用程序会显示该项目的详细信息 这 然后用户就有机会编辑这些详细信息 用户应该单击 每次更改后都会单击 保存 按钮 但当然这种情况并不
  • Android 列表视图与部分

    您好 我在尝试了解分段列表视图的工作原理时遇到问题 我让它工作到正常的列表视图中 但现在我想将部分添加到我的列表中 如何在其中添加节标题 这是我有效的代码 public class ChooseTeamActivity extends Li
  • 使用自定义视图填充 ListFragments?

    以前 我可以将布局扩展为 ListView 的自定义视图层次结构 但我不知道如何对 listFragment 执行相同的操作 假设我有一个 item list 布局 其中有一个 ImageView 和 2 个文本视图 我想将其膨胀以在我的
  • 为什么 getView 在分离列表适配器上返回错误的 ConvertView 对象?

    我根据自己的需要改编了 Jeff Sharkey 的分离列表适配器 SeparatedListAdapter 得到了如下结果 public class SeparatedListAdapter
  • 使用毕加索库时目标不能为空

    我实现了一个listView使用 Picasso Library 2 4 0 我遇到了一个问题 发生了什么 我使用 Android Studio 启动应用程序 然后转到我实现的特定片段listView 一切看起来都很好 所有图像都正在加载
  • ListView:通过鼠标拖动多选项目

    In ListView I can press Ctrl Shift and click on the item to select But I want to drag the mouse to select the items like
  • 在 Windows 10 UWP 应用程序中创建可滑动的 ListView,例如在地图应用程序中

    我正在创建 UWP 应用程序 我需要在滑动菜单中显示一系列结果 滑动菜单可滚动并且可以滑动改变其高度就像 Windows 10 Mobile 中的地图应用程序中的搜索结果一样 我找不到任何教程来创建这样的体验 提前致谢 您也可以使用User
  • react-native limit 列表项

    我在用Flatlist https facebook github io react native docs flatlist html来自反应本机和ListItem https react native training github i
  • 添加到可见属性时,字符串未被识别为有效的布尔值

    我正在尝试添加 true 或 false Visible 属性到我的listview itemtemplate桌子 我所做的是在页面加载时设置一个隐藏字段 以便我可以使特定列可见或不可见 这是我的隐藏字段和专栏 隐藏领域
  • 根据内容对列表视图中的相似行进行分组

    i have a listview that displays a set of rows each row is clickable now i wish to group similar type of rows under one h
  • MVVMCross 在 MvxBindableListView 中更改 ViewModel

    我的 Android 应用程序出现了一些小问题 我不知道如何使用 MVVM Cross 来解决它 这是我的模型 public class Article string Label get set string Remark get set
  • C#:如何在虚拟模式下有效过滤(隐藏)ListView 项目?

    C 如何在虚拟模式下有效过滤 隐藏 ListView 项目 我正在寻找一种在虚拟模式下过滤 隐藏 显示 ListView 中的项目的方法 我将我的项目缓存在列表视图项目数组中 如何有效地使其在按下过滤按钮时仅显示特定的列表视图项目 然后在按
  • ASP.NET 列表视图->单击行->执行操作

    我需要以下方面的帮助 我有一个用隐藏代码填充的列表视图 Linq gt Sql ListView1 DataSource from x in database ITEMS select x ListView1 DataBind 项目内容 I
  • Android中如何制作传统蒙古文ListView

    如何在 Android 应用程序中为垂直蒙古文制作水平滚动的 ListView 背景 Android 对世界上许多语言都有相当好的支持 甚至是阿拉伯语和希伯来语等 RTL 语言 但是 没有内置对自上而下语言的支持 例如传统蒙古语 http
  • 如何在颤动中的页面加载时在Listview上应用自动滚动

    我想对这个 ListTile 应用自动滚动 Container height 70 width double maxFinite child ListView builder controller controller key itemKe
  • Android相对布局放置问题

    我在 XML 中为列表项创建相对布局以用于 ListView 中的一系列项目时遇到问题 我已经尝试了几个小时 并且正在撕扯我的头发 试图让它看起来像我想要的那样 但无法让所有东西都出现在正确的位置 而不是重叠或错位 我可以获取第一张图像和接
  • android应用程序在模拟器上运行但在手机上运行

    我有我开发的这个应用程序 它在模拟器上运行得很好 没有任何错误 但当我尝试在手机上运行相同的代码进行测试时 应用程序崩溃并提示 filenotfoundexception 它说文件 res drawable divider horizo n
  • 当用户拖动列表视图项目时检测何时需要滚动

    介绍 我正在实现列表视图项目的重新排列 而不使用 OLE 拖放 PROBLEM 我已经成功解决了大部分任务 除了当用户想要将项目放置在当前不可见的位置时向上 向下滚动之外 问题 我可以使用以下消息向上 向下滚动列表视图 SendMessag
  • ListView 中的焦点控件

    上下文 我想要一个不会获得焦点的 ListView 例如不会 当用户触摸它时突出显示该行 然而每个行小部件都有它自己的 OnClickListener 这是我在布局 xml 中指定的内容 android choiceMode none an

随机推荐

  • 一:计算机基础入门及介绍

    计算机基础入门篇 1 计算机系统 计算机 Conputer 俗称电脑 一种能接收和存储信息 并按照存储在其内部的程序对海量数据进行自动 高速的处理 然后把处理结果输出的现代化智能电子设备 计算机有很多的形式类型 例如 生活中常见的家用电脑
  • chrome误删收藏夹书签如何恢复?

    打开书签管理器 按下Ctrl Z 然后就恢复了
  • python与excel做数据可视化-Python的Excel操作及数据可视化

    Excel表操作 python操作excel主要用到xlrd和xlwt这两个库 即xlrd是读excel xlwt是写excel的库 安装xlrd pip install xlrd 简单的表格读取 import xlrd 读取表格 data
  • emmc分区创建脚本

    bin sh add a new primary partition Param PartNum 1 3 First cylinder Last cylinder add partition echo creat primary parti
  • 深入理解Go——反射reflect

    文章目录 反射使用常见场景 反射原理 反射的基本函数 反射使用常见场景 需要反射的 2 个常见场景 有时你需要编写一个函数 但是并不知道传给你的参数类型是什么 可能是没约定好 也可能是传入的类型很多 这些类型并不能统一表示 这时反射就会用的
  • MySQL 库操作

    目录 创建数据库 语法 案例 字符集和校验规则 建数据库 建表用 查看系统默认字符集以及校验规则 db opt 更改 查看数据库支持的字符集 查看数据库支持的字符集校验规则 校验规则对数据库的影响 排升序 操纵数据库 查看数据库 显示创建语
  • 数据结构与算法学习(day4)——解决实际问题

    前言 在本章的学习此前 需要复习前三章的内容 每个算法都动手敲一遍解题 宁愿学慢一点 也要对每个算法掌握基本的理解 前面我们学习了简化版桶排序 冒泡排序和快速排序三种算法 今天我们来实践一下前面的三种算法 本章的学习目标 1 回顾三个算法的
  • openwrt ttyd 不能使用(修改lan口地址后)

    修改lan口地址后openwrt ttyd会被拒无法使用 解决办法如下 1 ssh 到openwrt的终端 2 编辑ttyd的配置文件 vim etc init d ttyd 3 将配置文件如下代码注释 interface i interf
  • Get,Post请求中文乱码问题有效解决方法

    对于做Java WEB项目同学来说 中文乱码问题是一个经常遇到而又非常头痛的问题 而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程 至于出现乱码的原因不是本文的关注的重点 想了解的朋友可以参考 http zhaomin819111
  • GitHub设置头像

    在 GitHub 上随处可见的头像 账户独有的标识 是通过 Gravatar服务显示的 只要使用创建 GitHub 账户时注册的邮箱在 Gravatar 上设置头像 GitHub 的头像就会变成您设置好的样子 http cn gravata
  • 华为OD机试 - 解密犯罪时间(Java)

    题目描述 警察在侦破一个案件时 得到了线人给出的可能犯罪时间 形如 HH MM 表示的时刻 根据警察和线人的约定 为了隐蔽 该时间是修改过的 解密规则为 利用当前出现过的数字 构造下一个距离当前时间最近的时刻 则该时间为可能的犯罪时间 每个
  • 深度学习中的IoU概念理解

    1 什么是IoU Intersection over Union IoU是一种测量在特定数据集中检测相应物体准确度的一个标准 IoU是一个简单的测量标准 只要是在输出中得出一个预测范围 bounding boxex 的任务都可以用IoU来进
  • Delphi中关于资源释放(Free,Relealse,FreeAndNil)

    根据日常编程经验 得出一些Delphi中关于资源释放的体会 假如有对象Obj为TObject类型 1 Obj Free直接释放资源后 调用OnDestroy事件 但是没有将Obj指针值置为Nil 2 Obj Release 等待资源不再使用
  • Kali proxychains

    1 什么是proxychains 在linux系统中有很多软件是不支持代理的 但是proxychains 却可以让不支持代理的软件 也能走代理通道 支持HTTP HTTPS SOCKS4 SOCKS5 等多种代理协议 而且还能配置代理链 可
  • struct和typedef struct的用法和区别

    1 在C和C 里的不同 在c中定义一个结构体类型用typedef typedef struct Student int m Stu 用这种形式定义的时候 在声明结构体变量的时候可用 Stu stu1 这种形式也等同于struct Strde
  • Open3D (C++) 点云添加随机噪声

    Open3D C 点云添加随机噪声 在三维点云数据中 噪声是不可避免的 它可能是由于传感器测量误差 环境因素或其他未知影响造成的 为了模拟这些噪声 我们可以使用 Open3D 中提供的工具将噪声添加到点云数据中 本文将介绍如何使用 Open
  • postgres导入备份出现'无效的命令\N'

    在使用pg dump对数据库进行备份的时候 到出成默认的格式 导致插入数据时 提示无效的命令 N 解决方法 使用custom格式导出 然后用pg restore导入 导出 pg dump F custom U username d dbna
  • 下拉框,文本域和文件域

    p 国家 p
  • VS中报错IntelliSense: argument of type "void *" is incompatible with parameter of type "const char *"

    在用VS编写C 程序的时候 遇到这样的问题IntelliSense argument of type void is incompatible with parameter of type const char 但是给的例程确实传入参数就是
  • ListView的操作

    转自http blog sina com cn s blog 43eb83b90100mhrs html 这一篇对我也不错http blog csdn net xiaohan2826 article details 8603015 小白叔叔