VISUAL BASIC-如何将列表框数据源设置为null

时间:2018-07-31 00:46:02

标签: vb.net null listbox datasource

我有一个列表框,我在其中使用以下代码行设置数据源:

ListBox2.DataSource = TextBox2.Text.Select(Function(c) c).ToList()

在此之后,我正在选择第一项,阅读并删除它。但是,当我尝试删除某项内容时

  

设置DataSource属性后,无法修改项目集合。

所以我做了一些阅读,看来我需要将数据源设置为null,但是我找不到在VB中执行此操作的方法。

谢谢您的时间!

1 个答案:

答案 0 :(得分:1)

否,您不需要将DataSource设置为null。如果这样做,您将像其他任何变量或属性一样简单地分配Nothing,但这不是您需要做的。如果要删除该项目,则需要从数据源中删除它。关键是:如果绑定了控件,则您无需修改​​控件中的数据,而只需修改数据源中的数据即可。

问题是,执行此操作时控件不会自动更新,因为它不知道数据源已更改。您应该做的是将List绑定到BindingSource并将其绑定到ListBox。您可以在设计器中添加BindingSource

BindingSource1.DataSource = TextBox2.Text.ToList()
ListBox2.DataSource = BindingSource1

然后您可以在Remove上调用RemoveAtRemoveCurrentBindingSource来删除项目。如果需要,您还可以调用ResetBindings上的BindingSource来刷新控件。

请注意,我还从您的代码中删除了多余的Select调用。 Text属性的类型为String,并且String已经实现了IEnumerable(Of Char),因此不需要进行Select调用,除非您需要除{{1}之外的其他内容}。