Я новичок в vb.net и пытаюсь создать приложение win CE в vb.net. Sdk портативного устройства находится в C#, который я конвертировал с онлайн-конвертером в vb.net. Ниже C# код:Использование делегатов в vb.net
public class DecodeEventArgs : EventArgs
{
private string barcode;
private byte type;
public DecodeEventArgs(string barcodeData, byte typeData)
{
barcode = barcodeData;
type = typeData;
}
public string Barcode
{
get { return barcode; }
set { barcode = value; }
}
public byte Type
{
get { return type; }
set { type = value; }
}
}
переустроенные в vb.net, как:
Public Class DecodeEventArgs
Inherits EventArgs
Public barcode As String
Public type As Byte
Public Sub New(ByVal barcodeData As String, ByVal typeData As Byte)
barcode = barcodeData
type = typeData
End Sub
Public Property pBarcode() As String
Get
Return barcode
End Get
Set(ByVal value As String)
barcode = value
End Set
End Property
Public Property pType() As Byte
Get
Return type
End Get
Set(ByVal value As Byte)
type = value
End Set
End Property
End Class
В моем переходе от C# Я добавил «р» к имени свойства, как вы видите в моем vb.net код, потому что у меня была ошибка, что сказал
Barcode уже объявлен в качестве публичной строки в этом классе
Я не уверен, если это является частью моей проблемы, но моя реальная проблема, по форме они использовали .BeginInvoke, чтобы вызвать класс с этим кодом:
void scanner_DecodeEvent(object sender, DecodeEventArgs e)
{
Win32.sndPlaySound(Properties.Resources.Scan, Win32.SND_ASYNC | Win32.SND_MEMORY);
this.BeginInvoke((Action<string>)delegate(string barcode)
{
scanCount = 0;
ListViewItem item = new ListViewItem(new string[] { barcode });
lstView.Items.Insert(0, item);
}, e.Barcode);
}
который я преобразуется в vb.net as:
Private Sub scanner_DecodeEvent(ByVal sender As Object, ByVal e As DecodeEventArgs)
PlaySound()
Me.BeginInvoke(DirectCast(Barcode As String))
scanCount = 0
Dim item As New ListViewItem(New String() {barcode})
lstView.Items.Insert(0, item)
End Sub
Который дает мне ошибку о том, что штрих-код не объявляется. Здесь я застрял. Спасибо за вашу помощь заранее
Спасибо @Visual Vincent. Выглядит намного чище, но подчеркивает Sub(), говоря «Expression Expected». Я также вынул «) после« End Sub », потому что это было подчеркнуто. –
@PercyKumah: Какую версию .NET Framework вы настраиваете? Кроме того, вам не нужно «@» кого-то на своем собственном посту. :) –
Скобка после 'End Sub' должна быть там, так как она закрывает' Me.BeginInvoke'. –