Ошибка при преобразовании кода элемента управления электронной таблицы Farpoint в VB.NET - PullRequest
0 голосов
/ 07 сентября 2018

Я обновляю код с 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

1 Ответ

0 голосов
/ 08 сентября 2018

Во-первых, если вы не используете позднюю привязку, вам нужно присвоить sprIn переменной правильного типа, а затем использовать эту переменную вместо sprIn (в качестве альтернативы вы можете изменить сигнатуру метода на правильный тип). Мы не можем знать, что это за тип, поэтому нет рабочего примера кода. Это лучшее, что мы можем сделать, не зная типа. Сначала убедитесь, что опция Infer On установлена ​​для этого файла или проекта, затем ...

Dim newSprd = trycast(sprIn, TheCorrectFarSpreadType)

Затем вы можете заменить все случаи использования, кроме одного в сигнатуре метода и приведенной выше строке, на newSprd.

Во-вторых, sprIn объявляется как ByRef, но не должно быть. Он не присваивает новое значение и не передается в методе, который присваивает новое значение byref.

Наконец, я знаю, что упомянул позднюю привязку как альтернативу правильному типу, но поздняя привязка должна быть зарезервирована для ситуаций, когда вам нужна типизированная утка. Учитывая, что это событие, которое находится под ударом, это не так здесь.

...