嗨,我正在看一个使用相机的教程,我遇到了一些我需要的方法。唯一的问题是它们在C#中,我需要它们在VB中。我使用过转换器但它没有正确转换它。
private void VideoCamera_Initialized(object sender, object eventArgs)
{
if (Initialized != null)
{
Initialized.Invoke(this, new EventArgs());
}
}
public bool LampEnabled
{
get { return (bool)_videoCameraLampEnabledPropertyInfo.GetGetMethod().Invoke(_videoCamera, new object[0]); }
set { _videoCameraLampEnabledPropertyInfo.GetSetMethod().Invoke(_videoCamera, new object[] { value }); }
}
以下是转换后的代码和错误:
Private Sub VideoCamera_Initialized(sender As Object, eventArgs As Object)
If Initialized IsNot Nothing Then
Initialized.Invoke(Me, New EventArgs())
End If
End Sub
Public Property LampEnabled() As Boolean
Get
Return CBool(_videoCameraLampEnabledPropertyInfo.GetGetMethod().Invoke(_videoCamera, New Object(-1) {}))
End Get
Set(value As Boolean)
_videoCameraLampEnabledPropertyInfo.GetSetMethod().Invoke(_videoCamera, New Object() {value})
End Set
End Property
错误:
错误2'公共事件已初始化(sender As Object,e As System.EventArgs)'是一个事件,无法直接调用。使用'RaiseEvent'语句来引发事件。
就第二种方法而言。即使没有任何错误,它看起来也没有被正确转换
答案 0 :(得分:2)
如错误所述,您需要使用RaiseEvent
;代码转换器不知道它实际上是一个事件,还是它是一个委托。当然,由于VB.NET是一种很棒的语言,因此Is Nothing
之前不需要New Object(-1) {}
检查或New Object()
或{value}
部分。< / p>
Private Sub VideoCamera_Initialized(sender As Object, eventArgs As Object)
RaiseEvent Initialized(Me, EventArgs.Empty)
End Sub
Public Property LampEnabled() As Boolean
Get
Return CBool(_videoCameraLampEnabledPropertyInfo.GetGetMethod().Invoke(_videoCamera, {}))
End Get
Set(value As Boolean)
_videoCameraLampEnabledPropertyInfo.GetSetMethod().Invoke(_videoCamera, {value})
End Set
End Property
答案 1 :(得分:0)
将其更改为
RaiseEvent Initialized(Me, EventArgs.Empty)