我正在从一个 ListBox
中选择项目,然后在单击按钮时将它们添加到第二个 ListBox
中。问题是,当我想从 listbox2 中取消选择选定的项目时,它会出现“对象引用未设置为对象的实例”错误。下面是我在 SELECT 按钮后面添加的代码。我使用了相同的代码来取消选择,其中 listbox1 替换为 listbox2,反之亦然。
注意:正在从数据库中检索 listbbox1 中的项目,在 listbox2 中选择的项目将保存到数据库中
List<int> rowIndexes = new List<int>();
foreach (int index in listBox1.SelectedIndices)
{
DataRowView view = listBox1.Items[index] as DataRowView;
string id = view["Course_Id"].ToString();
string name = view["Course_Name"].ToString();
listBox2.Items.Add(name);
rowIndexes.Add(index);
}
try
{
for (int i = rowIndexes.Count; i > 0; i--)
{
dt.Rows.RemoveAt(rowIndexes[i - 1]);
dt.AcceptChanges();
}
}
catch (Exception er)
{
MessageBox.Show(er.Message);
}
最佳答案
这充其量只是一个猜测,因为它在第一行失败的说法毫无意义。
我的精神力量告诉我,这实际上失败了
string id = view["Course_Id"].ToString();
因为 View 为空。问题是
DataRowView view = listBox1.Items[index] as DataRowView;
正在尝试将项目从 ListBox 转换为 DataRowView。这将始终返回 null,除非出于某些(奇怪的)原因您使用 DataRowView 的集合填充了 ListBox.Items。
编辑
您可能正在用 DataRowView 填充 listBox1,但您正在用 System.String 填充 listBox2:
string name = view["Course_Name"].ToString();
listBox2.Items.Add(name);
尝试将其更改为
//string id = view["Course_Id"].ToString();
//string name = view["Course_Name"].ToString();
listBox2.Items.Add(view);
关于c# - 取消选择列表框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912906/