昨日、悩んでいた CurrentCell に正しい値を設定する件は、ひとまず解決しました。(^^♪
妥当な方法か解らないが、色々調査した結果から判断しました。
公開されているプロパティ・メソッドで CurrentCell に大きく影響を与えるのは、DataMember,DataSource である。
バインディングした後で、バインディングデータが変化し、更新するために、再度、バインディングしようとすると
変化した値が反映されない。
この問題の対策としては、DataMember を再度設定すると正しく反映される。
しかし、バインディングする際に表示されるデータが1件もない場合(CurrentCell がnull になる場合)には、
上記の方法だけでは、ダメで、表示はされるが、下記の問題が発生している。
・CurrentCell は変化せず null のままである。
その対策として、バインディングした際に CurrentCell が null であれば、 DataMember もクリアする。
再度、バインディングしようとする際に、DataMember を再度設定すると正しく反映される。
毎回、その作業を行うのは負担があるので、この対策を含んだメソッドを基本となる DataGridView に
作成して対応するようにしました。
下記に作成したソースを記載しておきます。
#region データソースの設定を行う。
public void SetDataSource(object dataSource)
{
if(this.DataMember==""){return;}
if(dataSource==null){return;}
this.DataSource = dataSource;
this.saveDataMember = this.DataMember;
if(this.CurrentCell!=null){return;}
this.DataMember = "";
}
#endregion
#region データソースの更新を行う。
public void UpdateDataSource(object dataSource)
{
if(this.saveDataMember==""){return;}
this.DataMember = "";
this.DataMember = saveDataMember;
}
#endregion