错误:System.NullReferenceException

时间:2013-07-30 10:46:13

标签: c# winforms listbox

我有这个代码,但是当我点击列表框中的一个记录时,我有这个错误:

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

请问您有什么想法吗?

2 个答案:

答案 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以及使用llistBox1.SelectedValue = l.SelectedIndex;)。它们都引用相同的ListBox。

相关问题