我在C#中使用Linq从表中填入了一个列表框。 我将DisplayMemberPath设置为“Country”哪个好,没有问题。 从此列表框中选择国家/地区时,选择更改了事件。 此处运行另一个linq查询以将所选CustomerID与订单表中的CustomerID相匹配。这也很好。
现在。这是问题所在。如果我从第一个国家/地区更改选择,我会收到错误
对象引用未设置为对象的实例。
问题在于t2变量:
RESOLVED
答案 0 :(得分:0)
将断点放在SelectionChanged
事件中并检查((ListBox)sender).SelectedValue
的值。在这种情况下可能是null
。
修改强>
将null check
放入处理程序,因为ItemsSource is reset
用于列表框SelectedValue is set to null
,然后重置为其他值,这将自动更新您的选择 -
private void lbxCountry_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(((ListBox)sender).SelectedValue != null)
{
var t2 = (from o in db.Orders
where o.CustomerID == ((ListBox)sender).SelectedValue.ToString()
select o);
lbxCustCountry.ItemsSource = t2;
Tab0Total.Text = lbxCustCountry.Items.Count.ToString();
}
}
答案 1 :(得分:0)
当SelectedIndex更改为-1时,可能会引发一个事件,即没有选择任何内容。然后它会引发另一个选择更改为新选择的事件。
我建议在您的事件处理程序中放置逻辑以满足SelectedItem == null时的情况。可能清除其他列表适合这种情况。