-1

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

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

你调用的对象是空的。

问题出在 t2 变量上:

RESOLVED
4

2 回答 2

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();
    }
}
于 2013-04-14T18:14:18.323 回答
0

当 SelectedIndex 变为 -1 时,它可能会引发一个事件,即没有选择任何内容。然后它将引发另一个事件,以将选择更改为新选择。

我建议将逻辑放入您的事件处理程序中,以适应 SelectedItem==null 时的情况。可能清除其他列表适合这种情况。

于 2013-04-14T18:43:11.443 回答