将Farpoint电子表格控件成员代码转换为VB.NET时出错

问题描述 投票:0回答:1

我正在将代码从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
vb.net vb6-migration
1个回答
0
投票

首先,除非使用后期绑定,否则需要将sprIn分配给正确类型的变量,然后使用该变量而不是sprIn(或者您可以将方法签名更改为正确的类型)。我们无法知道该类型是什么,因此没有可用的示例代码。这是我们在不知道类型的情况下可以做的最好的事情。首先确保为该文件或项目设置Option Infer On,然后......

Dim newSprd = trycast(sprIn, TheCorrectFarSpreadType)

然后,您可以使用newSprd替换方法签名和上面一行之外的所有用法。

其次,sprIn被声明为ByRef,但不应该。它既没有赋值,也没有将byref传递给赋值的方法。

最后,我知道我提到了后期绑定作为获得正确类型的替代方法,但是后期绑定应该保留用于需要进行鸭子输入的情况。鉴于这是一个被击中的事件,这不是这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.