如何从另一个窗体访问方法



我正在做一个投射运动项目,我想在按下按钮时播放一个实时动画。按钮打开另一个窗体,为了让炮弹移动,我需要从第一个窗体调用一个方法

Public Class Projectile
Public Sub UpdatePosition()
Left = Left + 10
End Sub
End Class

这是来自第一个表单的代码

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
For Each control As Control In Controls
If TypeOf control Is Projectile Then
End If
Next
End Sub

这就是我想调用UpdatePosistion的地方。

我该怎么做?

我们需要将For Each循环中的control变量和If块强制转换为Projectile变量。我们可以使用OfType(Of T)方法来简化这一点:

For Each control As Projectile In Controls.OfType(Of Projectile)()
control.UpdatePosition()
Next

OfType()调用为我们处理强制转换和If检查。

您的类需要Inherits Control,否则在Controls集合中找不到它。

使用UpdatePosition方法将控件强制转换为类型。

Public Class Projectile
Inherits Control
Public Sub UpdatePosition()
Left = Left + 10
End Sub
End Class
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
For Each control As Control In Controls
If TypeOf control Is Projectile Then
DirectCast(control, Projectile).UpdatePosition()
End If
Next
End Sub

最新更新