刷新绑定数据源、上下文和控件的正确方法

Proper way to refresh BindingDataSource, Context and Controls

这个问题听起来可能微不足道,但我还是会问的。给出下面的代码,强制 ListBox 反映新的 table 内容的正确方法是什么。

SQLDataContext dataContext = new SQLDataContext();
BindingDataSource myBindingDataSource = dataContext.MyTable1;
listBox1.DataSource = myBindingDataSource;
listBox1.DispalyMember = "Column1";
listBox.ValueMember = "Column2";

MyTable1 newRecord = new MyTable1();
newRecord.Column1 = "Some data";
newRecord.Column2 = 123;
dataContext.MyTable1.InsertOnSubmit(newRecord);
dataContext.SubmitChanges();

如果您愿意,强制 listBox1 反映 dataContext 更改的最有效方法或最佳实践是什么?

请不要生气,但这是滥用集合的典型示例。您正在使用 2 个平行的集合,除非它们正确链接,否则您不能指望一个集合彼此了解很多。由于您将 listBox1 绑定到 BindingDataSource,因此您应该对相同的 BindingDataSource 执行添加、删除和更新操作。它绑定了两种方式。您在其中添加、更新或删除的所有内容都将反映在绑定控件和上下文中。只需提交上下文更改,您就会更新数据库。在您的示例中,您绕过 BindingDataSource 并直接写入上下文,因此“BindingDataSource”不知道更改。