【问题标题】:VISUAL BASIC - How do you set a listbox datasource to nullVISUAL BASIC - 如何将列表框数据源设置为 null
【发布时间】:2019-01-07 07:10:12
【问题描述】:

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

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

在这之后,我选择第一个项目,阅读它,然后删除它。但是当我尝试删除一个项目时,它会说

设置 DataSource 属性时无法修改 Items 集合。

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

感谢您的宝贵时间!

【问题讨论】:

  • 如何删除它?
  • 改进格式

标签: vb.net null listbox datasource


【解决方案1】:

不,您不需要将DataSource 设置为空。如果你这样做了,那么你只需分配Nothing,就像你对任何其他变量或属性所做的那样,但这不是你需要做的。如果要删除该项目,则需要将其从数据源中删除。这就是重点:如果控件已绑定,那么您无需修改​​控件中的数据,而是修改数据源中的数据。

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

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

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

请注意,我还从您的代码中删除了多余的 Select 调用。 Text 属性是 String 类型,而 String 已经实现了 IEnumerable(Of Char),因此不需要 Select 调用,除非您需要 Chars 本身以外的其他内容。

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2016-11-07
    • 2020-06-05
    • 2019-05-26
    • 2022-11-13
    相关资源
    最近更新 更多