web-dev-qa-db-ja.com

C#DataGridViewが空かどうかを確認します

Linqクエリから返されたデータでいっぱいになるdatagridviewがあります。クエリが結果を返さない場合は、メッセージボックスを表示します。 datagridviewが空かどうかを確認する方法はありますか?

よろしく

14
Goober

DataGridViewの行数を確認することで、空であるかどうかを確認できます。 myDataGridView.Rows.Count == 0の場合、DataGridViewは空です。

31
Meta-Knight

オプションAllowUserToAddRowsがtrueに設定されている場合、DGVが空であるかどうかをチェックするDGV.Rows.Countメソッドは機能しません。

AllowUserToAddRows = falseを無効にしてから、次のように空をチェックする必要があります。

if (dataGridView1.Rows != null && dataGridView1.Rows.Count != 0)
3
Ashraf Abusada

//これにより行数= 1になります

if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)

//最後に、以下のようにコードを変更しました。

if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
2

ここでの多くの回答には、Rows.Countへの参照があります。通常、それは問題を引き起こさず、ほとんどの場合、私が提案しようとしていることを行うのはやり過ぎでしょう。

ただし、 このドキュメント で説明されている理由により、DataGridViewに大量のデータ(Rows.Countセルが含まれる)が頻繁にある場合は、>~ 5000を呼び出すことはお勧めできませんしばらく前にその記事を検証するために行ったメモリプロファイリング)。

System.Windows.Forms.DataGridViewSelectedCellCollectionCountプロパティを使用して、選択したセルの数を決定することは避けてください。代わりに、DataGridView.GetCellCountメソッドを使用して、DataGridViewElementStates.Selected値を渡します。同様に、選択した行と列のコレクションにアクセスするのではなく、DataGridViewRowCollection.GetRowCountメソッドとDataGridViewColumnCollection.GetColumnCountメソッドを使用して選択した要素の数を決定します。

そのような場合、あなたは使用することができます

myDataGridView1.Rows.GetRowCount(.) == 0

急速に変化するデータや大量のデータ(さらに悪いことに、大量の急速に変化するデータ)を処理していない場合は、Rows.Countを使用するだけです。

1
Apoorv Khurasia

Linqの結果に基づいて、datagridviewを非表示にし、メッセージを表示する他のコントロール(リテラルなど)を表示できます。ある種のメッセージボックスポップアップが必要な場合は、そこにJavaScriptをスローする必要があります。

1
Matthew Groves

これはそれを行う必要があります:

dataGridView1.RowCount == 0
0
Fatos SYLAJ

DatagridviewのRows.Countプロパティを確認できます。

ただし、DataGridViewのEmptyDataTextプロパティを調べることもできます。メッセージボックスを表示する手間が省ける場合があります。

0
Brandon