2008年04月06日

二次元配列をもっとビュー 4

四回目。前回は Sort プロパティを設定したときに DataGridView などに通知する機構を追加しました。今回は要素が変更されたときの通知です。なお、面倒なので以降の記事では TwoDimensionalArrayView を ArrayView と、TwoDimensionalArrayRowView を ArrayRowView と書くことにします。

話しに入る前に、前回の終わりでちらっと触れた AllowEdit を書き換えておきましょう。これで DataGridView で表示しているときに値を編集できるようになります。まあ後からコードで AllowEdit を操作することもできるんですが、一般的には編集可能がデフォルトでしょうし。

// デフォルト値を変更
private bool allowEdit = true;

ListChangedEventArgs で利用される ListChangedType 列挙体には、リスト全体が変更となったことを表す Reset の他に、ItemAdded や ItemDeleted、ItemMoved などが存在しています。固定長である二次元配列には一見縁がなさそうですが、ListChanged イベントの対象となるリストは飽くまで ArrayView、つまり ArrayRowView の並び方が問題なのです。値を変更した結果 ArrayRowView の順序が変更されれば ItemMoved の ListChanged イベントを起こすさせる必要があります。また今回取り扱う予定はありませんが Filter(RowFilter)が適用されているとき(Filter を適用したタイミングでは Reset です)、そのフィルタから外れるように値が変更された場合は ItemDeleted の ListChanged を起こすことになります。

続きを読む
posted by Hongliang at 02:31| Comment(0) | TrackBack(0) | .NET | このブログの読者になる | 更新情報をチェックする

ここ(hongliang.seesaa.net)で公開しているものについて、利用は自由に行って頂いて構いません。改変、再頒布もお好きになさって下さい。利用に対しこちらが何かを要求することはありません。

ただし、公開するものを使用、または参考したことによって何らかの損害等が生じた場合でも、私はいかなる責任も負いません。

あ、こんなのに使ったってコメントを頂ければ嬉しいです。

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。