程序开发 > C# > Winform > 正文

C#动态创建listview并添加单击事件

亮术网 2020-08-12 本网原创

用 C# 开发 Winform 程序,大多情况下,listview控件都是直接拖到窗体中,直接设置属性和用 ImageList控件设置其宽度和高度就可以满足需要;但某些时候,事先要求不生成 listview,用到才动态创建,此时就得用代码动态添加。

动态创建listview 不外乎就是定义一个 listview 对象,同样很简单;如果不添加单击事件,的确简单,直接定义一个对象然后参照其属性设置需要属性;如果要添加listview单击事件并在该事件中进行相关操作,就比把 listview 拖到窗体的情况麻烦一点,从未动态添加过单击事件,可能一时半会不知如何添加,添加完后又怎么在单击事件中获取动态创建的 listview 对象。

 

动态创建listview并添加单击事件示例:

假如要用 listview 动态显示分类,点击某一类时显示该类的所有产品,实现代码如下:

/// <summary>
  /// C# listview动态添加、动态创建方法
  /// </summary>

  private void AddCategories()
  {
    ListView lvCategory = new ListView();
    lvCategory.View = View.LargeIcon;
    lvCategory.BorderStyle = BorderStyle.None;
    lvCategory.Cursor = Cursors.Hand;//设置鼠标为手指型

  lvCategory.Left = 430;
    lvCategory.Width = 500;
    lvCategory.BackColor = Color.lFromArgb(216, 222, 230);//背景颜色

  //添加单击事件
    lvCategory.SelectedIndexChanged += new EventHandler(lvCategory_SelectedIndexChanged);

  lvCategory.Items.Add("电脑");
    lvCategory.Items.Add("笔记本电脑");
    lvCategory.Items.Add("手机");
    lvCategory.Items.Add("数码相机");
    lvCategory.Items.Add("液晶电视");
    lvCategory.Items.Add("洗衣机");
    this.Controls.Add(lvCategory);
  }

// listview单击事件
  private void lvCategory_SelectedIndexChanged(object sender, EventArgs e)
  {
    ListView lvCategory = (ListView)sender;//获取动态创建的listview对象
    if (lvCategory.SelectedItems.Count > 0)
    {
      string categoryName = lvCategory.SelectedItems[0].SubItems[0].Text;//绑定产品
    }
  }

定义 listview 对象很简单,关键是在单击事件中怎么获取到那个新创建的对象,代码中用 (ListView)sender 即可实现。