Vb.net 循环另一个类中的控件
我创建了一个包含两个DataGridView的表单,两个包含随机文本的文本框,以及两个包含随机文本的组合框 我创建了两个类。DataGridViewForm和DataGridViewClassVb.net 循环另一个类中的控件,vb.net,winforms,oop,Vb.net,Winforms,Oop,我创建了一个包含两个DataGridView的表单,两个包含随机文本的文本框,以及两个包含随机文本的组合框 我创建了两个类。DataGridViewForm和DataGridViewClass Property Wissen() As Control Get Return ControlName End Get Set(value As Control) ControlName = valu
Property Wissen() As Control
Get
Return ControlName
End Get
Set(value As Control)
ControlName = value
If TypeOf ControlName Is TextBox Then
ControlName.Text = Nothing
ElseIf TypeOf ControlName Is ComboBox
ControlName.Text = String.Empty
End If
End Set
End Property
我在DataGridViewForm上的控件上循环以清除这些控件
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Pressing this button will clear all text and comboboxes
Dim button As New DataGridViewClass()
Dim a As Control = Nothing
For Each a In Me.Controls
button.Wissen = a
Next
End Sub
它是DataGridViewClass
Property Wissen() As Control
Get
Return ControlName
End Get
Set(value As Control)
ControlName = value
If TypeOf ControlName Is TextBox Then
ControlName.Text = Nothing
ElseIf TypeOf ControlName Is ComboBox
ControlName.Text = String.Empty
End If
End Set
End Property
这很好,但我想将循环从dgvFrom移动到dgvClass。我该怎么做?如果移动该循环,则会出现错误“Controls不是DataGridViewClass的成员”
好吧,根据我的建议,我试过:
ControlName = value
Dim a As Control
For Each a In ControlName.Controls
If TypeOf a Is TextBox Then
a.Text = Nothing
ElseIf TypeOf a Is ComboBox
a.Text = String.Empty
End If
Next
在DataGridViewForm中,我将
Dim button As New DataGridViewClass()
button.Wissen = Me
这管用!现在我可以对其他表单使用相同的清除按钮。谢谢 DataGridViewForm的控件不是静态的,您需要将
DataGridViewForm
的实例传递给DataGridViewClass
的实例,然后DataGridViewClass
将可以访问DataGridViewForm
的所有控件,下面是一个基本示例:
Public Class DataGridViewForm
Private DgvClassObj As DataGridViewClass
Sub New()
' pass this DataGridViewForm instance (Me) to an instance of DataGridViewClass
Init()
End Sub
Private Sub Init()
DgvClassObj = New DataGridViewClass(Me)
DgvClassObj.SomeMethodToLoopOverDataGridViewFormControls()
End Sub
End Class
Class DataGridViewClass
Private DgFormObj As DataGridViewForm
Sub New(ByRef dgform As DataGridViewForm)
Me.DgFormObj = dgform
End Sub
Public Sub SomeMethodToLoopOverDataGridViewFormControls()
For Each c As Control In DgFormObj.Controls
' now you can loop over the instance of your DataGridViewForm class
Next
End Sub
End Class
DataGridViewClass类需要对DataGridViewForm的引用,然后您可以从DataGridViewClass内部执行form.Controls。是的,我正在寻找类似的内容。但是,也会有其他表单具有相同的按钮和相同的功能。因此表单应该在变量中将其名称传递给类。不是名称,而是类的实例作为对象。。。如果该答案回答了您的问题,请将其标记为答案。