我尝试使用方法combobox
更改arraylist
中的选择时,从listview
中的一个listView1_SelectedIndexChanged
填充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;
}
}
请帮忙。
{{1}}
答案 0 :(得分: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...
}
}