我有这个代码,但是当我点击列表框中的一个记录时,我有这个错误:
System.NullReferenceException
这是我的代码:
namespace CestovniPrikaz
{
public partial class Form2 : Form
{
SqlConnection cn = new SqlConnection(@"Data Source=(Loca..Security=True");
SqlCommand cmd = new SqlCommand();
SqlDataReader dr;
public Form2()
{ InitializeComponent();
loadlist(); }
private void Form2_Load(object sender, EventArgs e)
{ cmd.Connection = cn;
loadlist(); }
private void loadlist()
{ listBox1.Items.Clear();
cmd.Connection = cn;
cn.Open();
cmd.CommandText = "select Name from Person";
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while(dr.Read())
{
listBox1.Items.Add(dr[0].ToString());
} }
cn.Close(); }
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{ListBox l = sender as ListBox;
if (l.SelectedIndex != -1)
{
listBox1.SelectedValue = l.SelectedIndex;
txtName.Text = listBox1.SelectedValue.ToString();
}} } }
问题可能出在这一行:
txtName.Text = listBox1.SelectedValue.ToString();
请问您有什么想法吗?
答案 0 :(得分:2)
试试这个:
txtName.Text = l.SelectedItem.ToString();
答案 1 :(得分:0)
这似乎是个问题。
listBox1.SelectedValue = l.SelectedIndex;
txtName.Text = listBox1.SelectedValue.ToString();
SelectedValue
为空,您正在调用引发异常的ToString
。为什么不做呢
txtName.Text = l.SelectedIndex.ToString();
此外,您直接呼叫listBox1
以及使用l
(listBox1.SelectedValue = l.SelectedIndex;
)。它们都引用相同的ListBox。