錯誤我想下面這段C#代碼轉換爲VB.NETRaisePropertyChanged - 而從C#代碼轉換到VB.NET
/// <summary>
/// Attempts to raise the PropertyChanged event, and invokes the virtual AfterPropertyChanged
/// method, regardless of whether the event was raised or not.
/// </summary>
/// <param name="propertyName">
/// The property which was changed.
/// </param>
protected void RaisePropertyChanged(string propertyName)
{
this.VerifyProperty(propertyName);
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
//Get the cached event args.
PropertyChangedEventArgs args = GetPropertyChangedEventArgs(propertyName);
//Raise the PropertyChanged event.
handler(this, args);
}
}
轉換後,VB代碼是:
''' <summary>
''' Attempts to raise the PropertyChanged event, and invokes the virtual AfterPropertyChanged
''' method, regardless of whether the event was raised or not.
''' </summary>
''' <param name="propertyName">
''' The property which was changed.
''' </param>
Protected Sub RaisePropertyChanged(propertyName As String)
Me.VerifyProperty(propertyName)
Dim handler As PropertyChangedEventHandler = Me.PropertyChanged
If handler IsNot Nothing Then
'Get the cached event args.
Dim args As PropertyChangedEventArgs = GetPropertyChangedEventArgs(propertyName)
'Raise the PropertyChanged event.
handler.Invoke(Me, args)
End If
End Sub
我使用了Telerik Code Converter,它不能完全轉換事件和XML屬性等。
問題是,Visual Studio顯示以下錯誤: 錯誤103'公共事件PropertyChanged(sender As Object,e As System.ComponentModel.PropertyChangedEventArgs)'是一個事件,無法直接調用。使用'RaiseEvent'語句來引發一個事件。
你能好心幫我這個,因爲我不擅長VB.NET語法和這樣的:(
Dim handler As PropertyChangedEventHandler = Me.PropertyChanged – Harsha
在VB中,在處理事件時必須使用AddressOf。所以也許你可以使用「AddressOf Me.PropertyChanged。 – Terry