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

listview修改选中行项的颜色和加加粗字体 Winform

亮术网 2013-11-17 本网原创

  在 Winform 中,listview控件无法事先修改某一项的颜色和字体,在控件属性处修改的是所有行或项的颜色和字体。一般来说,常常要使选择的行或项与其它行或项颜色不同以标示当前项,常见如用户点击了某一分类,显示属于该类的所有产品,被点击的类就是当前类,得用光亮的颜色显示以区别其它类,从而引导用户一类类浏览,不至于搞得眼花瞭乱,这就是所谓的用户体验。

  那么应该如何修改当前行或项的颜色和字体?这得用代码动态实现,下面举例说明。

 

  一、创建一个listview列表

  拖一个 listview 控件到主窗体中,并命名为 lv,向 lv 添加项(模拟分类)的代码如下:

  private void AddCategory()
  {
    lv.FullRowSelect = false;
    for(int i = 0; i < 11; i++)
      lv.Items.Add(i.ToString());
  }

 

  二、修改选中项的颜色和加粗字体(分类)

  首先为 listvew 添加选择索引改变事件 lv_SelectedIndexChanged,并在该事件中定如下代码:

  private void lv_SelectedIndexChanged(object sender, EventArgs e)
  {
    if (lv.SelectedItems.Count > 0)
    {
      foreach (ListViewItem lvi in lv.Items)
        lvi.ForeColor = Color.Black;

      //修改选中项颜色
      lv.SelectedItems[0].SubItems[0].ForeColor = Color.Red;

      //加粗字体
      Font f = new Font(Control.DefaultFont, FontStyle.Bold);
      lv.SelectedItems[0].SubItems[0].Font = f;

      //去掉选中项背景
      lv.SelectedItems[0].Selected = false;
    }
  }

  效果图如下:

修改listview选中项颜色

图1

 

 

  三、修改选中行的颜色和加粗字体(表格)

  这里跟上面的方法用同一个 listview 控件,把 listview 设置成一个表格,代码如下:

  private void AddListview()
  {
    lv.GridLines = true;
    lv.View = View.Details;
    lv.FullRowSelect = true;
    lv.CheckBoxes = true;

    lv.Columns.Add("学号", 100, HorizontalAlignment.Center);
    lv.Columns.Add("姓名", 100, HorizontalAlignment.Center);
    lv.Columns.Add("性别", 80, HorizontalAlignment.Center);
    lv.Columns.Add("年龄", 80, HorizontalAlignment.Center);

    ListViewItem lvi = new ListViewItem();
    lvi.SubItems.Clear();
    lvi.SubItems[0].Text = "001";
    lvi.SubItems.Add("李睛云");
    lvi.SubItems.Add("男");
    lvi.SubItems.Add("20");
    lv.Items.Add(lvi);

    lvi = new ListViewItem();
    lvi.SubItems[0].Text = "002";
    lvi.SubItems.Add("龙丹玲");
    lvi.SubItems.Add("女");
    lvi.SubItems.Add("18");
    lv.Items.Add(lvi);

    lvi = new ListViewItem();
    lvi.SubItems[0].Text = "003";
    lvi.SubItems.Add("王露飞");
    lvi.SubItems.Add("男");
    lvi.SubItems.Add("19");
    lv.Items.Add(lvi);
  }

  修改选中行的颜色和字体,跟上面的方法也一样(即 lv_SelectedIndexChanged(object sender, EventArgs e) 方法),运行效果图如下:

修改listview选中行颜色

图2

本文浓缩标签:ListviewWinform