我有这个,我想使用类似于Java使用.class文件的方式来调用事件并在我的主代码中使用它们。
问题是我无法获取.class文件来使用我的Dims
Form1.vb的:
Namespace LFS_External_Client
Public Class Form1
Inherits Form
Private OutGauge As OutGaugeInterface
Dim SpeedPref As String
Dim FuelCapacity As String
Dim Fuel As String
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Load() Handles MyBase.Load
Some Code
GetFuel()
End Sub
End Class
End Namespace
然后在Dataproccer.vb(.class文件)中:
Public Class DataProcesser
Public Sub GetFuel()
Some Code
Fuel = og.Fuel.ToString() * FuelCapacity
End Sub
End Class
代码缩短了,但包含所有相关和必要的部分。
答案 0 :(得分:2)
如果你想使用表单中的实际变量而不是通过方法调用传递它们,你需要将它们声明为public而不是使用dim:
...
Private OutGauge As OutGaugeInterface
Public SpeedPref As String
Public FuelCapacity As String
Public Fuel As String
...
答案 1 :(得分:1)
Dim FuelCapacity As String
Private Sub Form1_Load() Handles MyBase.Load
Some Code
DataProcesser.GetFuel(FuelCapacity)
End Sub
Public Shared Sub GetFuel(Byval FuelCapacity as string)
Some Code
Fuel = og.Fuel.ToString() * FuelCapacity
End Sub
答案 2 :(得分:1)
查看Dim语句的MSDN页面。
它声明:
类,结构或模块之外的代码必须符合成员资格 变量的名称,包含该类,结构或模块的名称。 过程或块之外的代码不能引用任何局部变量 在该程序或程序块内。
同样根据此MSDN article,Dim Statement的默认访问级别在模块级别为Private。
那么为什么不让GetFuel成为一个函数并以类似@kcBeard状态传递FuelCapacity并返回Fuel值。
Private Sub Form1_Load() Handles MyBase.Load
Some Code
Fuel = DataProcesser.GetFuel(FuelCapacity)
End Sub
Public Shared Function GetFuel(Byval FuelCapacity as string) as string
Some Code
return og.Fuel.ToString() * FuelCapacity
End Function
答案 3 :(得分:0)
您可以制作SpeedPref,FuelCapacity和Fuel公共成员变量,但更好的方法是使用适当的getter和setter在类上创建属性。 Dim只声明一个变量。请参阅下面修改后的代码示例:
Form1.vb:
Namespace LFS_External_Client
Public Class Form1
Inherits Form
Private OutGauge As OutGaugeInterface
Private _SpeedPref As String
Private _FuelCapacity As String
Private _Fuel As String
Public Property SpeedPref
Get
return _SpeedPref
End Get
Set(value As String)
_SpeedPref = value
End Set
End Property
...
End Class
End Namespace