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

コンボボックスの値を保持

環境/言語:[WindowsXP、C#]
分類:[.NET]

はじめまして。
現在Form1のコンボ1にDBからとってきたものをアイテムとして表示させています。
コンボ1で"AAA"と選択してForm1にある"次へ"ボタンでForm2が表示され
(Form1はClose、Form2はShow)、Form2にある"前へ"ボタンでForm1を
表示した時に、スタイルを"DropDown"にすると"AAA"と表示されますが、
"DropDownList"にすると初期(未選択状態)に戻ってしまいます。

Form1の"次へ"ボタンでグローバル変数に値を入れて渡しています。
Form2の"前へ"ボタンでグローバル変数で渡しています。

Form1の"Load"イベントにグローバル変数で作成したフラグで、
初めて開いた時と、Form2から戻ってきた時を判断させています。

"DropDownList"にするか、"DropDown"でも書込みが出来ないように
(編集不可)したいです。

どなたかご教授よろしくお願いいたします。
> コンボ1で"AAA"と選択してForm1にある"次へ"ボタンでForm2が表示され
> (Form1はClose、Form2はShow)、Form2にある"前へ"ボタンでForm1を
> 表示した時に、スタイルを"DropDown"にすると"AAA"と表示されますが、
> "DropDownList"にすると初期(未選択状態)に戻ってしまいます。

いまいち状況が掴めないでいますが、Form1を一旦Closeしているという
ことは再び表示する際にはForm1のインスタンスを新たに作っている
ということですよね?そうだとすると、未選択状態になると思います。
よって、大量のコントロールなどでリソース不足が起こる
心配がないのでしたら、Closeするのではなく、Hideしておけば
いいのではないでしょうか?
+αとして、グローバル変数を使うのではなく、Form2に明確に値を渡す、Form2の結果を取り出すってのをForm1に実装すればOK
antさん、中博俊さん、ご返答ありがとうございます。

> Closeするのではなく、Hideしておけば
> いいのではないでしょうか?

CloseではなくHide、Visible(false)ともに試しましたが結果は同じでした。

> +αとして、グローバル変数を使うのではなく、Form2に明確に値を渡す、Form2の結果を取り出すってのをForm1に実装すればOK

Form2の"前へ"ボタンのイベントでMessageBox.Showで値を確認
すると、"AAA"が入っています。
Form1の"Load"イベントで"DropDown"にした場合はMessageBox.Showに"AAA"が
表示され、"DropDownList"にすると空白が表示されます。

おっしゃる事に対しての回答で無いかも知れません。
すいません。もう少し教えていただけませんか?
こんにちは、じゃんぬねっと です。

■No9304に返信(mikeyさんの記事)
> CloseではなくHide、Visible(false)ともに試しましたが結果は同じでした。

こちらではなりませんでした。
いや、Close() していなくとも、新たにインスタンスを生成している以上はダメですよ。

> おっしゃる事に対しての回答で無いかも知れません。
> すいません。もう少し教えていただけませんか?

要するに、呼び出し側と呼び出される側との関係が、明確になっているかどうかです。
呼び出し側のインスタンスが、呼び出される側に対して単一でなければ、
同一インスタンスである保証がないため、クラスを使う意味すらなくなります。

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