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

子画面で設定した値を親画面が受取る方法

環境/言語:[Windows XP/VB.NET2003/データベースMSDE]
分類:[.NET]

初めて質問させていただきます。
よろしくお願いします。

VB.NETでWindowsアプリケーションを作成しています。
実現したいことは以下のようなことです。

@親画面のボタンをクリック

A子画面を開く

B子画面でTextboxにデータを入力

C子画面のOKボタンをクリック(子画面は閉じない)

D子画面に入力した値を変数に格納

E@〜Dを繰り返して、全ての入力が終了すれば、閉じるボタンで子画面を閉じる。

F親画面のボタンクリックで、D変数に格納した値をデータベースに書込み

@の親画面にある子画面を表示するためのボタンの数が多いことと、
データベースに書き込むまで一時的にDで変数に格納するのですが、
どのように格納すればいいのかがわかりません。
ご指導のほどよろしくお願い致します。
■No20977に返信(yossyさんの記事)
変数をprivate staticとしてクラスを一つ作り、
プライベートのコンストラクタを作成して、
インスタンス作成用のインスタンスメソッドを用意しておき、
あとは、そのクラスを使いまわして値をやり取りする方法があります。

http://dobon.net/vb/dotnet/form/singleform.html

こちらのHPにも、Formクラスですが、同じような事をしてあるのがあります。
参考にされるのがよろしいかと。
■No20978に返信(じゅでさんの記事)
もう少しサンプルを

public class Sample
{
private static Sample sample;

private Sample() { }

public static Sample Instance()
{
if (sample == null)
{
sample = new Sample();
}

return sample;
}
}

あとはこのクラス自体がHashtableやDictionaryなどを継承していれば、
自由自在に値を設定できます。
じゅでさん
解決できました。
ご提示していただいた方法ではなく
プロパティを使用してやりましたが、
勉強になりました。
ありがとうございました。
解決済み!
うーん、親が自発的に回収するのが一般的だと思いますけどね。
2007/11/15(Thu) 22:08:23 編集(投稿者)

■No21002に返信(じゃんぬねっとさんの記事)
> うーん、親が自発的に回収するのが一般的だと思いますけどね。
確かにおっしゃるとおりです。
子画面にプロパティを用意しておき、回収をするのが、一番自然だと思います。

あと、手段としては、同一プロジェクト内であれば、クラスの相互参照で
直接親側などに設定してもいいですが、やっぱ親が自発的に回収するのが
いいとは思いますが、画面の動きがいまいちわからず、

1〜5の作業が同一画面で、モーダルで表示されているならまだしも、
1〜5の作業が、モーダレスで作業が行えそうだと、読み取りましたので、

とりあえず、どっからでも触れるようなものを例にあげてみました。

判りにくくて申し訳ありません。
解決済み!

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