タイトル : 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 であれ、本来は設計から見直すべきでしょう。 個々のクラスやモジュールは、特定のフォームに、むやみに依存すべきでは無いと思いますし。 (かといって、依存してはいけない、という意味ではありませんが) > 共通使用フォームは使用するプロジェクトのみにセットし、共通モジュールはすべての > プロジェクトにセットしているためです。 共通モジュールが参照するのは、「どのプロジェクトからも参照されるフォーム」にして、 プロジェクト固有の処理は、別パーツとして分割して管理すれば、問題ないかと。 |