一千萬個為什麽

搜索

C#> VB轉換,RelayCommand的行為不同


    [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

我收到錯誤:

錯誤3未指定參數   'Private Sub'的參數'param'   ShowMyCommand(param As Object)'。

有任何想法嗎?我只是盲目轉換所以我不明白該項目的作用,我只是轉換它。

最佳答案

在VB方面,我有點傻瓜,但據我所知,你需要在方法名前加上關鍵字 AddressOf ,以便它可以用作方法組。事件。

以下行:

Me._myCommand = New RelayCommand(Me.ShowMyCommand)

需要寫成:

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

錯誤消息是因為編譯器正在嘗試編譯對該方法的調用,因此缺少其參數的參數。

轉載註明原文: C#> VB轉換,RelayCommand的行為不同

猜你喜歡