0

以下のコードを実行しようとすると、コード分析でエラーが発生します。

//コード

For Each UltraGridRow In transactionFieldsGrid.Rows.GetAllNonGroupByRows()
      If (Field.FieldTypeId = 1000) Then
         Dim cboUltra = New UltraCombo()
         cboUltra.DataSource = LoadLookupMulticolumn(Field.LookUpCode)
         UltraGridRow.Cells("FieldValue").ValueList = cboUltra
      EndIf
 Next

//エラー

CA2000 スコープを失う前にオブジェクトを破棄 メソッド 'TransactionFieldsController.LoadTransactionFieldsGrid(UltraGridBase, Collection(Of TransactionField), WorkflowsController, Boolean)' で、オブジェクト 'cboUltra' がすべての例外パスで破棄されません。オブジェクトへのすべての参照が範囲外になる前に、オブジェクト 'cboUltra' で System.IDisposable.Dispose を呼び出します。

これを克服するために、コードを次のように書き直しました。

     For Each UltraGridRow In transactionFieldsGrid.Rows.GetAllNonGroupByRows()
          If (Field.FieldTypeId = 1000) Then
              Using cboUltra As New UltraCombo()
                cboUltra.DataSource = LoadLookupMulticolumn(Field.LookUpCode)
                UltraGridRow.Cells("FieldValue").ValueList = cboUltra
             End Using
          EndIf
     Next

しかし、上記のコードのように試したとき。Object reference error以下の行が実行されると、私は取得しています。

transactionFieldsGrid.ActiveRow = transactionFieldsGrid.Rows.GetRowAtVisibleIndex(0)

注: グリッドと行には値が含まれています。

解決策はありますか?

4

1 に答える 1