下記のコードで、他のクラスから SetData メソッドを使用してデータを表示しています。
C#
1public class DataFormGridView : DataGridView 2{ 3 private DataGridViewRow UserIdRow = new DataGridViewRow(); 4 private DataGridViewRow UserNameRow = new DataGridViewRow(); 5 6 public void SetData(User user) 7 { 8 Rows.Clear(); 9 10 int i = Rows.Add(UserIdRow); 11 this[0, i].Value = "ユーザーID"; 12 this[1, i].Value = user.ID; 13 14 //2回目以降の実行時、下記部分で例外発生。 15 int j = Rows.Add(UserNameRow); 16 this[0, j].Value = "ユーザー名"; 17 this[1, j].Value = user.Name; 18 } 19} 20
1回目のSetData は正常に動作します。
2回目以降の SetData 実行時、ユーザーID の Row が表示された後、下記の例外が発生します。
指定された行は DataGridView コントロールに既に属しています。 System.InvalidOperationException: 指定された行は DataGridView コントロールに既に属しています。 場所 System.Windows.Forms.DataGridViewRowCollection.AddInternal(DataGridViewRow dataGridViewRow)
下記の箇所をコメントアウトすれば例外は発生しません。
C#
1 int j = Rows.Add(UserNameRow); 2 this[0, j].Value = "ユーザー名"; 3 this[1, j].Value = user.Name;
どうすれば、SetData メソッドを呼び出す度に、データを表示出来ますか?
回答1件
あなたの回答
tips
プレビュー