2016-04-11 18 views
0

私はDatagridviewが空であることを確認したいと思います。空であれば、このコードを使用しました。私はこのコードを使用しました。 "nullreferenceexception was unhandled"発生しました。vb.netでDatagridviewが空であることを確認してください

If DataGridViewReInfor.CurrentCell.Value Is Nothing Then 
      Me.Close() 
     Else 
      MessageBox.Show("Cell contains a value") 
     End If 
+0

をあなたは 'DataGridViewReInforを意味しています.RowCount = 0'? – bansi

答えて

3

DataGridViewは、行、列、およびセルを含む行列と似ています。セルは、特定の列の特定の行によって表されます。

特定のセルの値がnullであるときはいつでも、あなたが行っていることを、以下、チェックされています

If DataGridViewReInfor.CurrentCell.Value Is Nothing Then 

注:Valueは何もしない場合にチェックする前に、あなたはCurrentCellは何もありませんかどうかを確認する必要があります。そして、これがあなたに例外を与えた理由かもしれません。

If DataGridViewReInfor.CurrentCell Is Nothing Then 

しかし、あなたの目的は、あなたのDataGridViewの行が含まれている時はいつでも確認することであるならば、あなたは行数に依頼する必要があります。

If DataGridViewReInfor.RowCount>0 Then 

またはRows.Count

If DataGridViewReInfor.Rows.Count > 0 Then 
+0

セルが選択されていない場合は、コードの最初の行がNullReferenceExceptionに実行されます。まず、 'DataGridView.CurrentCell Is Nothing'をチェックする必要があります... –

+0

これは正しいですが、これはポイントまたは質問ではありません。問題は、行を含まないDataGridViewについてです。それ以上に、私は私の答えで「...特定のセルの値がnullのときはいつも」と書いていました。ありがとう – ehh

+0

質問のOPは実際にはNullReferenceExceptionに直面している...それは疑問です...それ以外の誰かがセルがacutally選択されているかどうかを知ることができるので、常にCurrentCellがNothingであるかどうかをチェックする必要がありますそうでないか... –

2

アクセスしたオブジェクトの変数またはプロパティがNothingだったため、例外が発生します。これはデバッガで見つけ出すのは簡単な例外です(式にカーソルを置くだけです)。この場合、選択肢がないので、CurrentCellNothingです。これは、一般的な例外のほとんどが実際には驚くべきものではないため、最初に確認するように自分自身を訓練するべきことのようなものです。

DataGridViewが空であるかどうかをチェックする場合:IsEmptyプロパティがない場合は、他のものを参照する必要があります。多分RowCountColumnCountを見てみると助けになるでしょう。

関連する問題