根据其在数据库中的状态突出显示列表框中的特定项目

时间:2020-05-24 22:02:10

标签: c# .net

我在数据库中有一个表,其中包含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();
    }

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

To look something like this

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

1 个答案:

答案 0 :(得分:0)

改为使用列表视图解决了该问题。

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();

    }