tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: 存在しないフォーム名を使う
投稿日: 2006/12/18(Mon) 17:11
投稿者魔界の仮面弁士
> そこでOption ExplicitをOffにしてみたのですが、それでもエラーが消えません。

Option Explicit を Off にしたとしても、
  Dim X As Object = New Form2()
のような、『型名』としての frmXXX は、コンパイルエラー[BC30002]として処理されます。


回避できる可能性があるのは、『変数名』としての frmXXX の方ですが、それにしても、
  Form2 = Form2
  Form2.ShowDialog()
  Form3 = New Form()
  Form3.ShowDialog()
  Form4 = Nothing
  Form4.ShowDialog()
のような、オブジェクトの代入操作を伴っているとか、
  TypeName(Form5)
  Form5.ShowDialog()
のように、他のメソッドへの呼び出しに利用しているとか、
  Dim Form6
  Form6.ShowDialog()
のように、明示的な変数宣言が行われていた場合と限られます。
# コンパイラのバージョン次第では、警告[BC42104]として扱われる可能性もありますが…。

そして、そういった処理無しに、単に
  Form6.ShowDialog()
とだけ書いてあるような場合には、未定義変数扱いでエラー[BC30451]となるでしょう。


> 何とかこのエラーをなくすことはできないでしょうか?
問題があるからこそのエラー or 警告なわけで、それを無視すべきではないと思いますよ。


> なぜこんなことをするかというと、複数のプロジェクトで共通して使用するフォームが
> いくつかあり、そのフォームを呼び出す部分を別の共通モジュールにまとめて記述しています。
今更かも知れませんが、それがVB6であれ、.NET であれ、本来は設計から見直すべきでしょう。
個々のクラスやモジュールは、特定のフォームに、むやみに依存すべきでは無いと思いますし。
(かといって、依存してはいけない、という意味ではありませんが)


> 共通使用フォームは使用するプロジェクトのみにセットし、共通モジュールはすべての
> プロジェクトにセットしているためです。
共通モジュールが参照するのは、「どのプロジェクトからも参照されるフォーム」にして、
プロジェクト固有の処理は、別パーツとして分割して管理すれば、問題ないかと。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。