Linq查询对象引用未设置为对象的实例

时间:2013-04-14 18:02:48

标签: c# wpf linq listbox

我在C#中使用Linq从表中填入了一个列表框。 我将DisplayMemberPath设置为“Country”哪个好,没有问题。 从此列表框中选择国家/地区时,选择更改了事件。 此处运行另一个linq查询以将所选CustomerID与订单表中的CustomerID相匹配。这也很好。

现在。这是问题所在。如果我从第一个国家/地区更改选择,我会收到错误

  

对象引用未设置为对象的实例。

问题在于t2变量:

RESOLVED

2 个答案:

答案 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时的情况。可能清除其他列表适合这种情况。