前提・実現したいこと
DataGridViewに独自クラスのコレクションを設定し、コード側でコレクションの中身を書き換えDataGridにその変更をリアルタイムに反映させる。
発生している問題・エラーメッセージ
最初はDataSourceにList<T>
を設定しておりwebで調べてリアルタイムの反映には
BindingList<T>
を使用しなければならないというところまではわかったのですが
BindingList<T>
を使用してもリアルタイムに反映されませんでした。
1点更新されるのが確認された方法として1度該当のセルが範囲外で非表示になるまでスクロールを行い
再度見える位置までスクロールすると表示が更新されていることを確認しました。
またコレクションの要素は最初に初期化後は追加も削除もされずbool
の値だけが書き換わる想定です。
該当のソースコード
C#
1public class Sample 2{ 3 public int No { get; set; } 4 public string Name { get; set; } 5 public bool Check { get; set; } 6} 7 8public class Main 9{ 10 public Main() 11 { 12 var list = new List<Sample>() 13 { 14 new Sample(){ No = 0, Name = "aaa", Check=true }, 15 new Sample(){ No = 1, Name = "bbb", Check=false }, 16 new Sample(){ No = 2, Name = "ccc", Check=true }, 17 new Sample(){ No = 3, Name = "xxx", Check=false }, 18 } 19 20 this.data = new BindingList<Sample>(list); 21 22 this.dataGridView.DataSource = this.data; 23 } 24 25 public BindingList<Sample> data { get; set; } 26 27 // 外部から呼ばれ定期的に更新を行う 28 public void Update() 29 { 30 int index = 0; 31 foreach(var x in this.data) 32 { 33 // 新しいbool値を取得し更新 34 x.Check = Getnewdata(i); 35 index++; 36 } 37 } 38 39}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/18 07:16 編集
2018/04/18 07:27