我有一个列表框,其中填充了 C# 中使用 Linq 的表中的条目。我将 DisplayMemberPath 设置为“国家/地区”,这很好,没有问题。从该列表框中选择国家/地区时,将触发选择更改事件。此处运行另一个 linq 查询以将选定的 CustomerID 与订单表中的 CustomerID 匹配。这也很好用。
现在。这就是问题所在。如果我从第一个国家/地区更改选择,我会收到错误
你调用的对象是空的。
问题出在 t2 变量上:
RESOLVED
将断点放在您的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();
}
}
当 SelectedIndex 变为 -1 时,它可能会引发一个事件,即没有选择任何内容。然后它将引发另一个事件,以将选择更改为新选择。
我建议将逻辑放入您的事件处理程序中,以适应 SelectedItem==null 时的情况。可能清除其他列表适合这种情况。