我已经搜索并搜索了此问题的答案。我以为我找到了这篇文章很接近: Get object information of selected listbox item
但是我在代码的这一部分仍然收到“无效的强制转换异常”错误:
string m = ((Customer)LBox.SelectedItem).ID;
到目前为止,这是我大部分的代码,在其中添加了数据类(linq至SQL)中的列表框项。卡住的地方是我想获取在列表框中选择的记录的DB_ID。
我有一个解决方法,可以在数据库上使用客户的名称LBox.SelectedItem值进行另一个SQL查询,但是我认为我必须做错了什么才能将SelectedItem值转换回Customer获取ID?
我刚开始使用C#,几乎一无所知,因此,我们将不胜感激。
DataClasses1DataContext dc = new DataClasses1DataContext(Properties.Settings.Default.DBConnectionString);
public MainWindow()
{
InitializeComponent();
var q = from accts in dc.Customers where accts.SysStatus == "Active" orderby accts.Customer select accts;
if (dc.DatabaseExists())
foreach (Customer c in q)
LBox.Items.Add(c.Customer);
}
public void LBox_SelectionChanged (object sender, SelectionChangedEventArgs e)
{
lblComp.Content = LBox.SelectedItem;
string m = ((Customer)LBox.SelectedItem).ID;
}
我认为@Boxed在这里帮助我。
我将代码修改如下:
foreach (Surgeon c in q)
LBox.Items.Add(c);
LBox.DisplayMemberPath = "Customer";
然后,我能够像这样从客户类中获取值:
string m = ((Customers)LBox.SelectedItem).ID;
lblComp.Content = ((Customers)LBox.SelectedItem).Customer;
txtDetails.Text = m;
此代码是否理想,还是应该做其他事情?