-3

私はこのコードを持っていますが、リストボックスのレコードの 1 つをクリックすると、次のエラーが発生します。

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

アイデアはありますか?

4

2 に答える 2

2

これを試して:

txtName.Text = l.SelectedItem.ToString();
于 2013-07-30T10:58:54.583 に答える
0

これが問題のようです。

listBox1.SelectedValue = l.SelectedIndex;
txtName.Text = listBox1.SelectedValue.ToString();

SelectedValueToStringnull であり、例外をスローする呼び出しを行っています。やってみませんか

txtName.Text = l.SelectedIndex.ToString();

また、 ( )listBox1を使用するだけでなく、直接呼び出しています。どちらも同じ ListBox を参照します。llistBox1.SelectedValue = l.SelectedIndex;

于 2013-07-30T10:55:13.847 に答える