C# > VB 转换,RelayCommand 的行为不同

标签 c# vb.net

    [Visual C#]
    public ICommand MyCommand
    {
        get
        {
            if (this.myCommand == null)
            {
                this.myCommand = new RelayCommand(this.ShowMyCommand);
            }

            return this.myCommand;
        }
    }

    private void ShowMyCommand(object param)
    {
        ...
    }

这段代码工作正常,但是当我将它转换为 Visual Basic 时:

[Visual Basic]
Private _myCommand As RelayCommand
Public ReadOnly Property MyCommand As ICommand
    Get
        If Me._myCommand Is Nothing Then
            Me._myCommand = New RelayCommand(Me.ShowMyCommand)
        End If

        Return Me._myCommand
    End Get
End Property

Private Sub ShowMyCommand(ByVal param As Object)

    ...

End Sub

我得到错误:

Error 3 Argument not specified for parameter 'param' of 'Private Sub ShowMyCommand(param As Object)'.

有什么想法吗?我只是在盲目转换所以我不明白这个项目是做什么的,我只是在转换它。

最佳答案

对于 VB,我有点如履薄冰,但据我所知,您需要在方法名称前加上关键字 AddressOf 才能将其用作事件的方法组。

下面一行:

Me._myCommand = New RelayCommand(Me.ShowMyCommand)

需要写成:

Me._myCommand = New RelayCommand(AddressOf Me.ShowMyCommand)

错误消息是因为编译器正在尝试编译对该方法的调用,因此缺少对其参数的参数。

关于C# > VB 转换,RelayCommand 的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2666409/

相关文章:

php - 连接到VB.NET中的源游戏服务器

.net - 变量替换为字符串

c# - 当 Activator 的接口(interface)具有泛型时,如何从 Activator 实例化一个对象?

c# - View 未编译时不重定向到错误页面

c# - 与 CancellationToken 的竞争条件,其中 CancellationTokenSource 仅在主线程上取消

c# - c#.Net 中 "var"关键字的意义是什么?

Windows 应用程序中的 Javascript/jquery

c# - 如何在 Fluent NHibernate 中映射 IDictionary<string, Entity>

.net - 禁用 datagridview 中的默认 Enter/Return 键行为

vb.net - 获取当前日期和时间