DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームを閉じるときのデータ保存について

環境/言語:[VB.NET2003NET Framework1.1,ACCESS2002]
分類:[.NET]

いつもこの掲示板を見て勉強させてもらってます。

VB.Net2003、Access2002で開発しています。
フォームの中にデータグリッドがあり、そのカラムのテキストを編集後すぐに
フォーム右上のコントロールボックス閉じるボタンを押した場合、
ClosingやClosedイベントでUpdateコマンドを入れても編集データが更新されません。

「閉じるボタン」を配置してそこにUpdateコマンドを入れれば更新されます。

そこでFormのClosing、Closed、まカラムのテキストボックスのTextChanged、Learveに
Me.BindingContext(DataSet,"TableName").EndCurrentEdit()
を入れたのですがデータは更新されず(というかテキストボックスのイベントは発生
しませんでした)、Updateコマンドの手前でクイックウォッチで
確認してもデータセットの中身も変更されていません。

なにか良い方法はないかお知恵を拝借できれば、と思い投稿しました。
よろしくお願いします。
まず最初に確認させてください。
> フォームの中にデータグリッドがあり、そのカラムのテキストを編集後すぐに
というのは、『行ヘッダに鉛筆マークが表示されている状態(編集中)』という解釈でよろしいでしょうか?
 もし違うようでしたら以下は流してくださいませ。


 こちらでもいくつか試してみましたが、良い方法を見つけることはできませんでした。 DataRowView.EndEdit メソッドはもちろん、 DataGrid.EndEdit メソッドでも期待した動作をしないようですし。

 検索するにしても適当なキーワードが思い付かず、見つけられたのは次のやり取りだけでした。

DataGrid における更新処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=1661

 ただ、こちらは一応解決になってますけど、新規行入力中だと反映されないようです。
#↑の確認をしたのは私ですので、勘違いしているかも知れません(汗)

 DataGrid 以外のコントロールに一度フォーカスを移すのが一番確実かも‥‥スマートではありませんけど(^_^;)
#でも個人的には、入力途中で終了させたらそのデータは破棄されるほうが妥当のように思います。
私も、DataGrid使う場合はどこかへフォーカスを移して、EndCurrentEditしてます。

使う人はどっちにしても文句言います。
確定させれば、途中なのに確定しやがって、
破棄させれば、せっかく打ったのに、
と。
使う人にあらかじめちゃんと説明してあればどちらでもいいんでしょうが、
私的には、破棄の方がいいのかな?、とは思ってます。

(9割方、DataGrid使いませんが。どうもうまくDataTableと連携されなくて色々なところで
おかしくなるし、Win98では横カーソル押すと落ちたりするし。そもそもグリッドなので
格子状で1レコード1行でしか表示できないから、業務系のアプリでは大抵役に立ちません。
伝票入力とか。)

DOBON.NET | プログラミング道 | プログラミング掲示板