C# Listview控件用法

C# Listview控件用法ListView我认为是种数据型的控件,以装载和展示数据为目的,当然也能展示图片,这个功能没有试过。这里讲一下ListView的第一次使用后的一些小结。 ListView一些设置与添加字段。Lv1=newListView();   //实例化Lv1.GridLines=true;file://显示各个记录的分隔线Lv1.FullRowSelect=

大家好,欢迎来到IT知识分享网。C# Listview控件用法

转载:blog.sina.com.cn/s/blog_62c4551e01014sr6.html

ListView我认为是种数据型的控件,以装载和展示数据为目的,当然也能展示图片,这个功能没有试过。这里讲一下ListView的第一次使用后的一些小结。

 

ListView一些设置与添加字段。

Lv1 = new ListView ( ) ;      //实例化

Lv1.GridLines = true ; file://显示各个记录的分隔线

Lv1.FullRowSelect = true ; file://要选择就是一行

Lv1.View = View.Details ; file://定义列表显示的方式

Lv1.Scrollable = true ; file://需要时候显示滚动条

Lv1.MultiSelect = false ; // 不可以多行选择

listView1.Items.Remove(listView1.SelectedItems[0]);   //这样可以在ListView中删除选择的行

Lv1.HeaderStyle = ColumnHeaderStyle.Nonclickable ;// 针对数据库的字段名称,建立与之适应显示表头

 

设置列名称:

Lv1.Columns.Add ( “A” , 60 , HorizontalAlignment.Right ) ;

Lv1.Columns.Add ( “B” , 100 , HorizontalAlignment.Left ) ;

Lv1.Columns.Add ( “C” , 100 , HorizontalAlignment.Left ) ;                                                   

Lv1.Visible = true ;

 

用循环把数据插入进ListView,用reader方法读取中括号中的字段名。        

lv1.Items.Clear();     //清空lv1中的记录

ListViewItem li = new ListViewItem();

li.SubItems.Clear();      //清空每行数据的每一列数据。

foreach (DataRow reader in stu.Rows)  //前提是stu有数据,stu是DataTable

{

    ListViewItem item = new ListViewItem((reader[“EMP_NO”]).ToString());

    item.SubItems.Add(reader[“NAME”].ToString());

    item.SubItems.Add(reader[“ID”].ToString());

    this.lv1.Items.Add(item);

}

接下来说说Listview中的一些小技巧。          

一、鼠标选中一行记录,如何读取那行记录中的某列记录??

很简单用这句话:lv1.SelectedItems[0].SubItems[0].Text

 

SelectedItems[0]指的是你选中的行,如果你选中的是多行,那么第一行中括号里就是0,第二行就是1,以此类推。

SubItems[0] 指的是你选中的列,第一列中括号里就是0,第二行就是1,以此类推。

 

二、Listview中双击记录事件。

在 .cs 文件里写:

    private void lv1_DoubleClick(object sender, EventArgs e)  //双击listview

{

//这里写你想要产生的事件。例如:

MessageBox.Show(“OK”);

}

在 .Designer.cs 文件里找到相关的控件代码写入如下信息:

this.lv1.DoubleClick += new System.EventHandler(this.lv1_DoubleClick);

例如:

// lv1

//

this.lv1.Location = new System.Drawing.Point(-3, 98);

this.lv1.Name = “lv1”;

this.lv1.Size = new System.Drawing.Size(1018, 527);

this.lv1.TabIndex = 28;

this.lv1.UseCompatibleStateImageBehavior = false;

this.lv1.View = System.Windows.Forms.View.Details;

this.lv1.DoubleClick += new System.EventHandler(this.lv1_DoubleClick);

三、Listview隐藏列

有时候用Listview会遇到这样的麻烦。

众所周知主键是区分每条不同记录最可靠的方法,一旦主键不显示在Listview中,那选中Listview某一行也就意味着在这一行中取不到这条记录的主键,只能取到其他显示的字段,那如何把这条记录传递给其他窗口呢?用其他字段?如果是这样的话就风险太大了,因为其他字段会有重复的可能,这样的程序就会出现BUG。

这时候就该发挥隐藏列的作用了,隐藏列方便使用,其作用是在前台页面看不出有那条主键的字段,但是在代码控制中却包含了这个字段,我们点击某一条记录时就能方便的获取这条记录的主键字段,这样只要把这字段字符传到其他窗体就没问题了,因为主键字段是唯一且不能为空的。

下面说说具体实现方法。 

Lv1.Columns.Add ( “A” , 60 , HorizontalAlignment.Right ) ;

Lv1.Columns.Add ( “B” , 100 , HorizontalAlignment.Left ) ;

Lv1.Columns.Add ( “C” , 100 , HorizontalAlignment.Left ) ;                                                   

Lv1.Visible = true ;

 

foreach (DataRow reader in stu.Rows)  //前提是stu有数据,stu是DataTable

{

    ListViewItem item = new ListViewItem((reader[“EMP_NO”]).ToString());

    item.SubItems.Add(reader[“NAME”].ToString());

item.SubItems.Add(reader[“ID”].ToString());       

item.SubItems.Add(reader[“PrimaryKey”].ToString());

    this.lv1.Items.Add(item);

}

红色的是列的标题,白色的是循环输出每一行数据,这样可以很明显的看出,只有3列,却插入了4列的数据,而最后一列就是主键,而显示是也只有3列,那有人会问了,既然第四列没有显示,如何去第四列的数据呢?

也是同样的代码:lv1.SelectedItems[0].SubItems[3].Text

这个3显示的就是第四列的数据,因为计算机是从0开始计数的,很简单吧!

namespace ListViewExercise

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            ListViewSet();

            CreateViewItemMethodOne();

            //CreateViewItemMethodTow();

        }

        /// ListView 設置

        private void ListViewSet()

        {

            //ListView顯示方式

            listViewControl.View = View.Details;

        }       

        /// //手動填加ListView方法1

        private void CreateViewItemMethodOne()

        {

            listViewControl.BeginUpdate();

            #region 增加Item的標題,共有三個列

            //1、創建標題

            listViewControl.Columns.Add(“文件名”);

            listViewControl.Columns.Add(“大小”);

            listViewControl.Columns.Add(“創建日期”);

            #endregion

            #region 手動填加ListView方法

            //2、增加第一個Item,在View.Details模式下,有點像第一列中一個值

            listViewControl.Items.Add(“folder1″,”文件夾1”,0);

            //3、增加第一個Item的第一個SubItem,在View.Details模式下,有點像第一列中一個值

            listViewControl.Items[“folder1”].SubItems.Add(“11”);

            //增加第一個Item的第二個SubItem,在View.Details模式下,有點像第一列中一個值

            listViewControl.Items[“folder1”].SubItems.Add(“20080114”);

            listViewControl.Items.Add(“folder2″,”文件夾2”,0);

            listViewControl.Items[“folder2”].SubItems.Add(“21”);

            listViewControl.Items[“folder2”].SubItems.Add(“20080115”);

            listViewControl.Items.Add(“文件夾3”);

            listViewControl.Items.Add(“文件夾4”);

            #endregion

            listViewControl.EndUpdate();

        }

        ///  手動填加ListView方法2

        private void CreateViewItemMethodTow()

        {

            #region 增加Item的標題,共有三個列

            //1、創建標題,共三列

            listViewControl.Columns.Add(“文件名”);

            listViewControl.Columns.Add(“大小”);

            listViewControl.Columns.Add(“創建日期”);

            #endregion

            listViewControl.BeginUpdate();

            #region 增加第一個Item

            //2、定義一個ListViewItem,在View.Details模式下,有點像第一列中一個值

            ListViewItem lvItem;

            //3、定義ListViewSubItem,在View.Details模式下,有點像第二列中一個值

            ListViewItem.ListViewSubItem lvSubItem;

            //實列化一個Item,在View.Details模式下,有點像加第一行的第一個值

            lvItem = new ListViewItem();

            //Item的顯示的文字

            lvItem.Text = “文件夾1”;

            //4、Item增加到ListView控件中,即增加第一行。在View.Details模式下,有點像增加了第一個項目的第一列的第一個值

            listViewControl.Items.Add(lvItem);

           

            //實例化SubItem

            lvSubItem = new ListViewItem.ListViewSubItem();

            lvSubItem.Text = “10”;

            //5、將SubItem增加到第一個Item中,在View.Details模式下,有點像增加了第一個項目的第二列的第一個值

            lvItem.SubItems.Add(lvSubItem);

            lvSubItem = new ListViewItem.ListViewSubItem();

            lvSubItem.Text = “20080114”;

            //將SubItem增加到第一個Item中,在View.Details模式下,有點像增加了第一個項目的第三列的第一個值

            lvItem.SubItems.Add(lvSubItem);

            #endregion

            #region  增加第二個Item

            lvItem = new ListViewItem();

            lvItem.Text = “文件夾2”;           

            lvSubItem = new ListViewItem.ListViewSubItem();

            lvSubItem.Text = “20”;

            lvItem.SubItems.Add(lvSubItem);

            lvSubItem = new ListViewItem.ListViewSubItem();

            lvSubItem.Text = “20080115”;

            lvItem.SubItems.Add(lvSubItem);

            listViewControl.Items.Add(lvItem);

            #endregion

            listViewControl.EndUpdate();

        }

     

//第三种自己的方法,挺有效的,简单的

    private void CreateViewItems()

        {

            listView1.BeginUpdate();

            listView1.Columns.Add(“矩阵控制命令”);

            listView1.Columns.Add(“功能描述”);

            listView1.Columns[0].Width=145;

            listView1.Columns[1].Width=515;

            listView1.Items.Add(“/%Lock;”);

            listView1.Items[0].SubItems.Add(“锁定键盘”);

            listView1.Items.Add(“/%Unlock;”);

            listView1.Items[1].SubItems.Add(“解开键盘的锁定”);

            listView1.Items.Add(“/Version;”);

            listView1.Items[2].SubItems.Add(“查询软件版本”);

            listView1.Items.Add(“/:BellOff;”);

            listView1.Items[3].SubItems.Add(“关闭蜂鸣器”);

            listView1.EndUpdate();

        }

    }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21463.html

(0)
上一篇 2024-01-18 10:33
下一篇 2024-01-20 21:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信