Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
为什么';t Me.Controls.OfType在VB.NET中工作?_Vb.net_Linq - Fatal编程技术网

为什么';t Me.Controls.OfType在VB.NET中工作?

为什么';t Me.Controls.OfType在VB.NET中工作?,vb.net,linq,Vb.net,Linq,我正在使用.NETFramework4.7.2作为参考 我正在使用Me.Controls.OfType自动处理表单中的事件 子添加文本框\u TextChanged() Dim textboxs=Me.Controls.Of类型(文本框)() Console.WriteLine(textboxs.Count) 对于文本框中的每个txt AddHandler txt.TextChanged,所有文本框的地址\u TextChanged 下一个 端接头 私有子样本表单加载(发送方作为对象,e作为事件

我正在使用.NETFramework4.7.2作为参考

我正在使用
Me.Controls.OfType
自动处理表单中的事件

子添加文本框\u TextChanged()
Dim textboxs=Me.Controls.Of类型(文本框)()
Console.WriteLine(textboxs.Count)
对于文本框中的每个txt
AddHandler txt.TextChanged,所有文本框的地址\u TextChanged
下一个
端接头
私有子样本表单加载(发送方作为对象,e作为事件参数)处理MyBase.Load
AddTextBox_TextChanged()
端接头
私有子AllTextBox\u TextChanged(发送者作为对象,e作为事件参数)
' ...
端接头

但是,For循环不起作用,所以我用
Console.WriteLine(textboxs.Count)
检查了
textboxs
中是否有实际的textbox控件。结果是
0
。我在表单设计中多次检查文本框,它们是存在的。为什么
无法控制(文本框的)OfType()
工作?

将处理程序放在表单的代码中。 在“设计”视图中,选择其中一个文本框。 在“属性”窗口中,选择闪电以显示
文本框可用的所有事件。选择TextChanged事件和下拉框箭头。将列出您的
所有文本框\u TextChanged
方法,因为签名匹配。选择您的方法,句柄代码将添加到该方法中。 对要使用此方法的每个文本框执行相同的操作

当然,您始终可以键入ExtendedHandles子句

但是,我看不出你的代码有什么问题

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim textboxes = Controls.OfType(Of TextBox)() '.ToList
    For Each txt In textboxes
        AddHandler txt.TextChanged, AddressOf AllTextBoxes_TextChanged
    Next
End Sub

Private Sub AllTextBoxes_TextChanged(sender As Object, e As EventArgs)
    Dim tb = DirectCast(sender, TextBox)
    MessageBox.Show($"The text changed event fired by {tb.Name}")
End Sub

适用于我。

您的文本框是包含在表单(me)中还是在其他容器中?(群组框、面板等)哦,我没想到。。。如何在GroupBox中获取文本框?@UnoVillegas最简单的方法是在表单设计器中进行拖放。或者只是在groupbox曲面中创建它们