2016-12-17 8 views
0

私はdatagridviewでソフトウェアを作成しました。それはdatagridviewからすべてのデータを保存することができます。しかし、問題はデータです。ユーザーが1つのセルにデータを挿入しないと、ソフトウェアがクラッシュします。どのように私はこれを確認できますか?私はこのコードでDGVコンテンツを保存します。C#:DGVセル内容の確認

//Write in file 
    StreamWriter ecriture = new StreamWriter(tes, true); 



     for (int i = 0; i < dataGridView1.Rows.Count-1; i++) 
     { 


      for (int j = 0; j < dataGridView1.Columns.Count; j++) 
      { 
       ecriture.Write("\t"+dataGridView1.Rows[i].Cells[j].Value.ToString()+"\t"+"|"); 
      } 
      ecriture.WriteLine(""); 

     } 
     ecriture.Close(); 

私はあなたが私を助けることができると思います:)フランス

答えて

0

から ありがとうございますが、データモデルを作成する必要があり、あなたのデータに対応しているプロパティが含まれているだけのクラスをグリッド列。

dgv.DataSource = myList; 

を、細胞からのテキストや値を読み取るに反対するとして、グリッドあちこちにデータを取得するために、オブジェクトのリストを使用します。

public class MyModel { 
    public string prop1 {get;set;} 
} 

そして、そのようなあなたのグリッドにBindingList<MyModel>をバインドします。

セルにVALUESなどがあるが、オブジェクト指向のアプローチではない場合はいつでもchceckできます。また、列を並べ替えるときにはコード変更として維持するのが非常に難しいです。読んで

何か:

https://msdn.microsoft.com/en-us/library/y0wfd4yz(v=vs.110).aspx

Binding List<T> to DataGridView in WinForm

それでもあなたの道を行くしたい場合は、そのチェーンのすべての要素がヌルでないことを確認してください。

dataGridView1.Rows[i].Cells[j].Value.ToString() 

そのインデックスdoesntの持つ行が存在する場合、THERはgovenインデックスとcolimnについて同じ、IndexOutOfRangeExceptionです。セルが存在しても空であれば、ValueはNULLであり、ヌルオブジェクトでToStringを実行できないため、NullReferenceExceptionが返されます。

+0

はい、データを1つ1つ確認するだけです。私はそれをどのようにすることができますか? –

+0

BindingListの項目ごとに確認することはできます。 1つ1つを確認することが適切なプログラミングアプローチを行わない理由ではない – MadOX

関連する問題