2013-07-02 73 views
1

Im试图从两个arraylist中的一个填充combobox,使用方法listView1_SelectedIndexChanged更改listview中的选择。 问题是它第一次工作正常,但第二次我得到以下错误:“对象引用未设置为对象的实例。”通过选择ListView中的项目来填充组合框

的错误可能是发生在这里:string pr = listView1.FocusedItem.Text;

请帮助。

private void listView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     ArrayList Profesor1 = new ArrayList(); 
     Profesor1.Add("Kolegij 1 profesor 1"); 
     Profesor1.Add("Kolegij 2 profesor 1"); 



     ArrayList Profesor2 = new ArrayList(); 
     Profesor2.Add("Kolegij 1 profesor 2"); 
     Profesor2.Add("Kolegij 2 profesor 2"); 



     string pr = listView1.FocusedItem.Text; //posible prob 
     switch (pr) 
     { 
      case "Profesor 1": comboBox1.DataSource = Profesor1; 
       break; 
      case "Profesor 2": comboBox1.DataSource = Profesor2; 
       break; 
     } 
    } 

回答

0

您的示例中是否还有其他事情正在影响listView1项目?我嘲笑了你的问题的一小克隆,我似乎无法复制的错误:

我用你的代码的事件处理程序,我填充listView1正是如此:

 listView1.Items.Add("Profesor 1"); 
     listView1.Items.Add("Profesor 2"); 

这听起来像是你在后台触发listView1_SelectedIndexChanged处理程序。作为一个微不足道,你的数组列表不会改变,你可能不想让你的ArrayList创建在你的事件处理程序中,并且每次都要重新创建它们(它们似乎没有任何动态的信息)。特别是因为这个处理程序经常会被调用两次,用于取消选择,并且再次被选中。

关于最后一点,也是值得拥有看看ItemSelectionChanged事件,它可以用来帮助您最初的问题,因为它带有ListViewItemSelectionChangedEventArgs包含物业IsSelected,你可以用它来确认您有一个对象被选中。

e.g:

private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) 
    { 
     if (e.IsSelected) 
     { 
      // Your code here. 
      // e.Item... 
     } 
    } 
+0

Thx for private void listView1_ItemSelectionChanged(object sender,ListViewItemSelectionChangedEventArgs e) if(e.IsSelected) { //您的代码在这里。 } }'这工作正常.. –

+0

我添加了if语句(** if(listView1.SelectedItems.Count> 0)**)并且工作正常。我的代码:'if(listView1.SelectedItems.Count> 0) { string pr = listView1.FocusedItem.Text; switch(pr) case“Profesor 1”:comboBox1.DataSource = kolegijiProfesor1; 休息; 案例“Profesor 2”:comboBox1.DataSource = kolegijiProfesor2; 休息; } }' –

+0

好东西,我没有设法复制错误,但很高兴你已经解决了你的问题= D – Chris

0

看看this可以帮到你。也看看here

+0

只是链接到的网页是不好的做法。总结未来用户的重要位,以防止这些链接最终破裂。 – Logarr

相关问题