VB.NET 泛函数 system.collections.generic.list(of textbox) 的使用问题!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.NET 泛函数 system.collections.generic.list(of textbox) 的使用问题!相关的知识,希望对你有一定的参考价值。
有函数如下,
Public Function GetTextboxFromFrm(ByVal frm As Control, ByVal k As Integer) As List(Of TextBox)
Dim obj As Control
Dim listTB As New List(Of TextBox)
For Each obj In frm.Controls
Debug.WriteLine(obj.Name & " " & TypeName(obj))
If TypeOf obj Is TextBox Then
listTB.Add(obj)
Else
If obj.HasChildren Then
listTB.AddRange(GetTextboxFromFrm(obj, k))
End If
End If
Next
Return listTB
End Function
请问如何将listTB中元素的text属性赋值给一个数组呢?为什么下面的方法不行?
Private Sub Gettext(ByVal list As List(Of TextBox), ByVal k As Integer)
Dim cc As String()
Dim i As Integer
For i = 0 To k
cc(i) = list(i).Text
Next
End Sub
运行Gettext函数时,会出现“未将对象引用设置到对象的实例”的错误。
或者可以告诉我在VB.NET中怎么获取一个窗口上所有文本框的text属性,并将其放在一个数组中~感谢!
请高手帮帮忙,感激不尽,这个问题卡住很久了~
定义数组要这么定义Dim cc(k) As String
还有你为什么要用参数k呢,可以通过list.Count来获得列表中元素的数量。
Private Function GetText(list As List(Of TextBox)) As String()
If list Is Nothing Then Throw New ArgumentNullException("list")
Dim k As Integer = list.Count - 1
Dim cc(k) As String
For i As Integer = 0 To k
cc(i) = list(i).Text
Next
Return cc
End Function
还有一些其他方法,比如用convertAll
Dim Texts = list.ConvertAll(Function(txt) txt.Text).ToArray
或者LINQ:
Dim ts = (From c In list Select c.Text).ToArray
ConvertAll返回类型就是List(Of T),LINQ返回类型是IEnumerable(OF T)。它们都有ToArray()方法来转化为数组,不过很多时候其实用不着转化成数组。
上面两种语法至少要VS2008才支持 参考技术A 问教授吧~亲
以上是关于VB.NET 泛函数 system.collections.generic.list(of textbox) 的使用问题!的主要内容,如果未能解决你的问题,请参考以下文章