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