将代码形式vb.net转换为c#时出现问题

时间:2010-11-29 10:42:25

标签: c# vb.net

VB代码:

Public Event PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged

Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)
  If PropertyChangedEvent IsNot Nothing Then
    RaiseEvent PropertyChanged(Me, e)
  End If
End Sub

转换后的C#代码

public event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged;

public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);

public void OnPropertyChanged(PropertyChangedEventArgs e)
{
    if (PropertyChangedEvent != null) {
        if (PropertyChanged != null) {
            PropertyChanged(this, e);
        }
    }
}

错误是:

  

错误1当前上下文中不存在名称“PropertyChangedEvent”

2 个答案:

答案 0 :(得分:3)

您的活动名为“PropertyChanged”,而非“PropertyChangedEvent” 此外,事件已明确实现,这意味着,您必须使用此: ((INotifyPropertyChanged)this).PropertyChanged代替PropertyChanged来访问该活动 正如Oded所指出的那样,代码会对事件进行两次检查。您可以删除其中一个检查。

答案 1 :(得分:0)

不要使用显式接口实现,只需将其设为公共方法即可。

或者将this转换为接口以调用处理程序。 ((INotifyPropertyChanged)this).PropertyChanged