タイトル : Re^2: 存在しないフォーム名を使う 投稿日 : 2006/12/18(Mon) 17:29 投稿者 : フウセンウナギ
> > そこで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 であれ、本来は設計から見直すべきでしょう。 > 個々のクラスやモジュールは、特定のフォームに、むやみに依存すべきでは無いと思いますし。 > (かといって、依存してはいけない、という意味ではありませんが) > > > > 共通使用フォームは使用するプロジェクトのみにセットし、共通モジュールはすべての > > プロジェクトにセットしているためです。 > 共通モジュールが参照するのは、「どのプロジェクトからも参照されるフォーム」にして、 > プロジェクト固有の処理は、別パーツとして分割して管理すれば、問題ないかと。 大吉末吉さんのおっしゃるようにすればエラーは出ないのですが、フォームの呼び出しを Showからではなく、その前に別途フォーム固有のモジュールを呼んでおりそこで再びエラーに なってしまいました。 フォーム呼び出し前にはどうしても前処理が必要なので、いちいちプロジェクトが 変わるたびに記述するのは面倒です。 とりあえず、フォームもすべてのプロジェクトにセットするようにします。 どうもありがとうです。 |