在文本框中显示详细信息

本文关键字:显示 详细信息 文本 | 更新日期: 2023-09-27 18:01:45

我有一个列表框。每当我从数据库中搜索一个人时,结果将显示在一个列表框中。然后我想要的是,每当我从列表框中单击人名时,人名的详细信息将显示在文本框中。我有我的代码,但问题是,只有我第一次点击的人的详细信息显示在文本框中。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        connection.Open();
        OleDbCommand select = new OleDbCommand();
        select.Connection = connection;
        select.CommandText = "Select * From Accounts";
        OleDbDataReader reader = select.ExecuteReader();
        while (reader.Read())
        {
            if (reader[0].ToString() == listBox1.Tag.ToString())
            {
                fnametb.Text = reader[1].ToString();
                lnametb.Text = reader[2].ToString();
                agetb.Text = reader[3].ToString();
                addresstb.Text = reader[4].ToString();
                coursetb.Text = reader[5].ToString();
            }
        }
        connection.Close();
    }

在文本框中显示详细信息

如果您想使用您的代码,您需要刷新listBox1.Tag并在Tag Selected列表框中输入项键。或者你需要使用reader[0].ToString() ==listBox1.SelectedValue

改为listBox1.selectedItem.ToString()

您检查的是ListBox.Tag而不是ListBox.SelectedItem

Tag属性可用于存储您想要与项关联的任何对象。虽然可以存储任何项,但Tag属性通常用于存储有关该项的字符串信息,例如唯一标识符或该项数据在数据库中的索引位置。

您可以简单地检查SelectedItem,因为无论如何您都在listBox1_SelectedIndexChanged事件中。

代替

if (reader[0].ToString() == listBox1.Tag.ToString())

if (reader[0].ToString() == listBox1.SelectedItem.ToString())

检查

if (reader[0].ToString() == listBox1.Tag.ToString())
it will not work....

您需要获取列表框的选定索引

你的Select Query必须有一些参数,比如WHERE子句,这样程序就会知道它将加载数据库中的哪些特定数据。

告诉我你的列表框是怎么显示的

这只是另一个选项