Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 无法访问listbox项的属性值_Vb.net_Listbox - Fatal编程技术网

Vb.net 无法访问listbox项的属性值

Vb.net 无法访问listbox项的属性值,vb.net,listbox,Vb.net,Listbox,我有一个激活了多个选择的列表框,我正在尝试读取不同的选择值 我尝试了许多片段,下面是最新的两个片段: For i = 0 To ListBox1.SelectedIndices.Count MsgBox(ListBox1.Items((ListBox1.SelectedIndices(i))).value) Next For i = 0 To ListBox1.SelectedItems.Count MsgBox(ListBox1.SelectedItems(i).

我有一个激活了多个选择的列表框,我正在尝试读取不同的选择值

我尝试了许多片段,下面是最新的两个片段:

 For i = 0 To ListBox1.SelectedIndices.Count
     MsgBox(ListBox1.Items((ListBox1.SelectedIndices(i))).value)
 Next


 For i = 0 To ListBox1.SelectedItems.Count
     MsgBox(ListBox1.SelectedItems(i).value)
 Next
由于某种原因,我选择的任何方法都无法读取任何项目的值

我的列表框是数据绑定的,所以我在一个论坛上发现,将其公开可能会解决这个问题,但事实并非如此

我犹豫不决,因为即使Intellisense也没有显示太多信息,我得到的只是:

Equals
GetHashCode
GeType
ReferenceEquals
ToString
知道我哪里出错了吗

提前谢谢

编辑:


使用数据绑定的
列表框时,这些项不是
ListBoxItem
对象(您希望这些对象具有
文本
属性)。相反,它们是来自数据源的类型。
Items
集合(及其变体,如
SelectedItems
)定义为对象集合,运行时类型从数据源获取。你试过这样的东西吗

For i = 0 To ListBox1.SelectedItems.Count
    MsgBox(ListBox1.SelectedItems(i).ToString())
Next
在注释中,您指出数据源是包含
String
对象的DB对象。如果您有一组类,例如
Person
,则可以通过以下方式获得:

For i = 0 To ListBox1.SelectedItems.Count
    MsgBox(DirectCast(ListBox1.SelectedItems(i), Person).FirstName)
Next
对于每个
,只要在循环过程中所选项目集合没有更改,您也应该使用
获得相同的结果

For Each p As Person in ListBox1.SelectedItems
    MsgBox(p.FirstName)
Next
注意:这是未经测试的代码,因为我现在不在Visual Studio前面。


编辑:我从屏幕截图中看到,
值成员
被设置为名为
Id
的属性。如果这是数据库中的
uniqueidentifier
列,则列表框中的运行时类型应为
Guid
当您使用数据绑定的
ListBox
时,这些项不是
ListBoxItem
对象(您希望具有
Text
Value
属性)。相反,它们是来自数据源的类型。
Items
集合(及其变体,如
SelectedItems
)定义为对象集合,运行时类型从数据源获取。你试过这样的东西吗

For i = 0 To ListBox1.SelectedItems.Count
    MsgBox(ListBox1.SelectedItems(i).ToString())
Next
在注释中,您指出数据源是包含
String
对象的DB对象。如果您有一组类,例如
Person
,则可以通过以下方式获得:

For i = 0 To ListBox1.SelectedItems.Count
    MsgBox(DirectCast(ListBox1.SelectedItems(i), Person).FirstName)
Next
对于每个
,只要在循环过程中所选项目集合没有更改,您也应该使用
获得相同的结果

For Each p As Person in ListBox1.SelectedItems
    MsgBox(p.FirstName)
Next
注意:这是未经测试的代码,因为我现在不在Visual Studio前面。


编辑:我从屏幕截图中看到,
值成员
被设置为名为
Id
的属性。如果这是数据库中的
uniqueidentifier
列,那么列表框中的运行时类型应该是
Guid

我不太喜欢在VB中使用数据GUI工具。也就是说,我想你要找的是:

For Each dvRow As DataRowView In Me.Listbox1.SelectedItems
  MessageBox.Show(dvRow("Id").ToString)
Next
如果您对姓氏字段感兴趣,请将“Id”更改为“姓氏”


另外,我使用了
MessageBox.Show
而不是
MsgBox
MsgBox
是VB6的遗留产品。

我不太喜欢在VB中使用数据GUI工具。也就是说,我想你要找的是:

For Each dvRow As DataRowView In Me.Listbox1.SelectedItems
  MessageBox.Show(dvRow("Id").ToString)
Next
如果您对姓氏字段感兴趣,请将“Id”更改为“姓氏”


另外,我使用了
MessageBox.Show
而不是
MsgBox
MsgBox
是VB6的遗留项。

列表框中有哪些项目?(一个字符串、整数、一个数据表、一个类对象)?它们都是来自DB的字符串,我正在使用数据绑定(在弹出菜单中)在表单加载上自动填充列表框。您可以提供有关数据绑定源的详细信息吗。更好的是,向我展示将列表框绑定到数据源的代码。(listbox1的数据源是否只有一列?)?(一个字符串、整数、一个数据表、一个类对象)?它们都是来自DB的字符串,我正在使用数据绑定(在弹出菜单中)在表单加载上自动填充列表框。您可以提供有关数据绑定源的详细信息吗。更好的是,向我展示将列表框绑定到数据源的代码。(listbox1的数据源是否只有一列?)!我以前确实试过这个,但是没有DataRowView的
部分,它改变了我的想法:再次感谢!工作得很有魅力!我以前确实试过这个,但是没有DataRowView的
部分,它改变了我的想法:再次感谢!我感谢帮助,主要是解释,db来自一个旧软件,所以没有Guid,但我知道这与强制转换有关:我感谢帮助,主要是解释,db来自一个旧软件,所以没有Guid,我知道这与强制转换有关:D