VB.NETでウィンドウズフォーム全体を再読み込みをさせたいです。
機能としては
FORM A → DataGridViewを表示 新規登録ボタンがある
FORM B → FROM Aの新規登録ボタンを押すとダイヤログボックスでFROM Bが表示される。画面には複数のtextboxと登録ボタン
FORM Bにデータを入力後、登録ボタンを押しエラーがなければ、FORM Bが消え、FROM Aが再読込みされ、DataGridViewが更新される。
ということをしたいのですが、調べるとRefreshメソッドを使用すれば更新されると
書いてあるのですが、DataGridViewが更新されません。
また、FORM Bの登録ボタンに
FORM A.close()
FORM A.show()
Me.close()
のように一度FROM Aを消してから再度FORM Aを表示させようとすると、
FROM A,B共に消えてしまいます。
環境
ウィンドウズ7
VB.NET
Visual studio2013
フレームワーク .NETフレームワーク4.5
フォームは全てウィンドウズフォームで作成しています。
追記****
その後
FORM A.close()
FORM A.show()
を実行したところエラーが発生しました。
一度閉じたインスタンス(破棄された)はもう一度showできないため、エラーが出ていることが判明しました。
この方法はあきらめます。
また、DataGridViewにデータテーブルを読み込ませると作成される、TableAdapterを
編集し作成しました。 FORM Aの部分は元々Meと記載されています。
FROM A.MST_USERTableAdapter.Fill(FORM A.テーブル名)
これをグローバルメソッドとして宣言し、FORM Bの登録ボタンに設定したところ、
新規データ登録時に、DataGridViewが同時に更新され、実行したい動作になりました。
しかし、また問題が発生しました。
現在作成しているプログラムは厳密にいうと
ログイン画面 → FORM A → FORM B
というようにFROM Aの前にログイン画面があります。
Visual studioではプログラムを起動した際に、プロパティから最初に起動するフォームを選ぶのですが、
FORM Aを選択すると上手く動作し、ログイン画面を起動画面にすると、DataGridViewが更新されません。
ただし、再度ログイン画面に戻り、FORM Aを表示させるとDataGridViewは更新されています。
そのためデータテーブル自体は更新されています。
同じプログラムなのに、起動するフォームの順番によって、TableAdapterの内容が変化するのはなぜでしょうか。
FORM A ***グローバルメソッド*** Public Sub yomikomi() user.tableTableAdapter.Fill(user.テーブル名) End Sub ***DataGridView読込み*** Me.zenTableAdapter.Fill(Me.テーブルデータ) ***新規登録画面へ*** Private Sub sinki_Click(sender As Object, e As EventArgs) Handles sinki.Click user2.Show() End Sub FORM B ***データテーブルにテキストボックスの中身を書き込む処理*** ***登録ボタンをクリック*** Private Sub touroku_Click(sender As Object, e As EventArgs) Handles touroku.Click reroad() Me.Close() End sub
あなたの回答
tips
プレビュー