投稿者 るしぇ  (社会人) 投稿日時 2008/10/4 22:39:03
>別フォームの情報にアクセスするには、ただ、作成したフォーム名だけを指定すれば
>良いと勘違いしていたのが全ての原因だったようです。
フォームだけ特別なんです。(他のクラスは New が必要なのに。。。)

時代にフォーム名を直接指定すると VB が裏で勝手にインスタンスをつくる
仕様でした。では廃止されていたのですが、
復活してしまいました。賛否両論ありますが、今後も永字さんのように勘違いして
質問する人は続くでしょうねぇ。。。

別のインスタンスが生成されている疑いがある場合は、フォームに対する命令の
直前で、Show してやることです。画面が複数表示されればアウトです。

Shared 宣言で共有化した変数でインスタンスを管理。。。
ご自分で考えられたのだと思いますが、よく考えられていると思います。
ただ、やはり皆、考えることは同じでして、
[DOBON.NET > プログラミング道 > .NET Tips > フォームが一つしか表示されないようにする]
http://dobon.net/vb/dotnet/form/singleform.html
自分のインスタンスの生成までフォーム内部に実装してしまえばいいのです。

更に、既存の
  Public Sub New()

  Private Sub New()
に書き換えます。…すると、Instance プロパティを使うしかフォームの
インスタンスを得る手段がなくなります。
この手法は、1つの画面を1つしか表示しない場合、ボクもよく使う手法です。