1

5 つの行がdatagridviewあり、列名は XS、S、M、L、および XL です。

フローは最初にユーザーがブランド (CHL と XRA) を選択し、ユーザーが XRA を選択すると、列名が -,1L,2L,3L,4L に変更されます。

ここでの問題は、列名が変更されたセルから値を取得するたびに、この種のエラーが発生することです:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

これは、セルから値を取得するためのサンプル コードです。

dvJOBranch.Rows(0).Cells.Item("M").Value.ToString

列の名前を変更しない場合、このコードは完全に機能しますが、列の名前を変更すると、エラーが発生します。

4

2 に答える 2

1

列のインデックスが変わらない場合は、名前ではなくインデックスでアクセスできます。

dvJOBranch.Rows(0).Cells.Item(2).Value.ToString 'third column

オブジェクト参照がオブジェクトのインスタンスに設定されていないということは、NullReferenceException

上記のコード行は、次のことを前提としています。

  • dvJOBranch.Rows(0) は nullではありません。それ以外の場合は、へのアクセスCellNullReferenceException
  • dvJOBranch.Rows(0).Cells.Item(2) は nullではありません。それ以外の場合は、へのアクセスItem(2).ValueNullReferenceException
  • dvJOBranch.Rows(0).Cells.Item(2).Value は null ではありません.ToString()。それ以外の場合、メソッドの呼び出しはNullReferenceException

null 値を処理するには、適切なテストを行う必要があります。

If dvJOBranch.Rows(0).Cells.Item(2).Value IsNot Nothing Then
    (...)
End If

NullReferenceException とは何ですか? また、どのように修正すればよいですか?も参照してください。

于 2013-09-01T23:47:08.180 に答える