首页 > 解决方案 > 根据它们在数据库中的状态突出显示列表框中的特定项目

问题描述

我在数据库中有一个包含 ID、名称和性别列的表。我像这样填充列表框:

    public void fill_listbox()    
    {
        lbProjects.Items.Clear();
        con.Open();
        cmd = new SqlCommand("SELECT name FROM Table1", con);
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        foreach (DataRow dr in dt.Rows)
        {
            lbProjects.Items.Add(dr["name"].ToString());
        }
        con.Close();
    }

是否可以突出显示(不选择)列表框中具有特定性别的所有项目?例如,更改数据库中所有性别为“男性”的项目的背景颜色/字体粗细/字体颜色。

看起来像这样

如果无法使用列表框,我可以使用什么其他组件?

标签: c#.net

解决方案


通过使用 listview 来解决它。

public void fill_listbox()
    {
        listView1.Columns.Add("", -2, HorizontalAlignment.Left); 
        listView1.Items.Clear();
        con.Open();
        cmd = new SqlCommand("SELECT name,gender FROM Table1", con);
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        foreach (DataRow dr in dt.Rows)
        {
            ListViewItem lvi = new ListViewItem();

            if (dr["gender"].ToString() == "male")
            {
                lvi.Text = dr["name"].ToString();
                lvi.ForeColor = Color.Blue;
                listView1.Items.Add(lvi);
            }
            else {
                lvi.Text = dr["name"].ToString();
                lvi.ForeColor = Color.Pink;
                listView1.Items.Add(lvi);
            }
        }
        con.Close();

    }

推荐阅读