簡體   English   中英

將Farpoint電子表格控件成員代碼轉換為VB.NET時出錯

[英]Error while converting Farpoint spreadsheet control member code to VB.NET

我正在將代碼從VB 6升級到VB.NET,以下代碼給我一個錯誤:

Col is not member of control

同樣,它向所有成員(行,動作等)拋出相同的錯誤。

Private Sub VGILeaveCell(ByRef sprIn As System.Windows.Forms.Control, 
ByVal lngCol As Integer, ByVal lngRow As Integer, 
ByVal lngNewCol As Integer, ByVal lngNewRow As Integer)

    '
    ' Check to see if location of new cell is locked
    '

    sprIn.col
    sprIn.Row = lngNewRow        
    sprIn.Col = lngNewCol
    '
    ' If it is locked, set the active cell back to where it was before
    '

    If sprIn.Lock Then          
        sprIn.Row = lngRow

        sprIn.Col = lngCol          
        sprIn.Action = enmVGIAction.SS_ACTION_ACTIVE_CELL
        '
        ' If it is not locked, allow the movement to proceed
        '
    Else

        sprIn.Row = lngNewRow           
        sprIn.Col = lngNewCol           
        sprIn.Action = enmVGIAction.SS_ACTION_ACTIVE_CELL
    End If

End Sub

首先,除非使用后期綁定,否則需要將sprIn分配給正確類型的變量,然后使用該變量代替sprIn(或者,可以將方法簽名更改為正確類型)。 我們不知道該類型是什么,因此沒有有效的示例代碼。 這是我們不知道類型的最佳選擇。 首先確保為該文件或項目設置了“選項推斷”,然后...

Dim newSprd = trycast(sprIn, TheCorrectFarSpreadType)

然后,您可以用newSprd替換方法簽名和上一行中的所有用法以外的所有用法。

其次,將sprIn聲明為ByRef,但不應這樣。 它既沒有分配新值,也沒有將byref傳遞給分配新值的方法。

最后,我知道我提到過后期綁定可以代替正確的類型,但是后期綁定應該保留給需要鴨子輸入的情況。 鑒於這是一個被擊中的事件,此處並非如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM