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

タイトル 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からではなく、その前に別途フォーム固有のモジュールを呼んでおりそこで再びエラーに
なってしまいました。

フォーム呼び出し前にはどうしても前処理が必要なので、いちいちプロジェクトが
変わるたびに記述するのは面倒です。
とりあえず、フォームもすべてのプロジェクトにセットするようにします。
どうもありがとうです。

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

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