- PR -

VBで(SDI)子フォームから子フォームが開かない

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/07/05
投稿数: 2
投稿日時: 2007-07-05 23:25
開発しているのは、VBでWin.アプリを開発しています。

VBで(SDI)子フォームから子フォームが開きません。
厳密には最初に作ったフォーム(Form1)を親フォームに指定はしていません。
Form1からForm2,3は開くのですが、Form3からForm2とForm2からForm3が開きません。

分かる方いらしたら、ご指導願います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-05 23:32
引用:

未記入さんの書き込み (2007-07-05 23:25) より:

VBで(SDI)子フォームから子フォームが開きません。
厳密には最初に作ったフォーム(Form1)を親フォームに指定はしていません。
Form1からForm2,3は開くのですが、Form3からForm2とForm2からForm3が開きません。
分かる方いらしたら、ご指導願います。


各々のインスタンスは特に何もしなければ独立しておりますから問題なく動作するハズです。現状はこの程度の回答しかできませんから、実装を書いて頂いた方が早道になるでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2007/07/05
投稿数: 2
投稿日時: 2007-07-05 23:56
返信ありがとうございます。
私はAccess2000を用いてデータベースアプリケーションを作製しています。


Form1のボタンから

Dim fm2 As New Form2
fm2.ShowDialog()

Dim fm3 As New Form3
fm3.ShowDialog()

とすると、問題なくForm2,3は開くのですが、

Form3のボタンから

Dim fm2 as New Form2
fm2.ShowDialog()
とすると、
「指定されたキャストは有効ではありません」
とエラーメッセージがでてしまいます。

ちなみにForm3のLoadプロシージャで
Dim fm2 as New Form2
fm2.ShowDialog()
とすると、問題なくForm2が開きます。


また、
Form2, Form3にはForm1のDataAdapterを参照するため、

fm1 = Form1.ActiveForm

を記述しています。
以下Form3のサンプルです。
=================
'モジュールレベル変数
Private fm1 As Form1

Private Sub Form3_Loadプロシージャ内
fm1 = Form1.ActiveForm

End Sub

Private Sub Btnプロシージャ内
Dim fm2 as New Form2
fm2.ShowDialog()

End Sub
=================

Form2, Form3 内から fm1 = Form1.ActiveForm
を消し、Form3から
fm2.ShowDialog()
を実行したところ、
指定されたキャストは有効ではありません』
のメッセージが消えました。

ところが、fm1 = Form1.ActiveForm を消すと、
Form2,Form3からForm1のDataAdapterが参照できないため、
Form1で作製したDataAdapterを
Form2,Form3で再作製しなければいけなくなってしまいます。
DataAdapterが多いだけにとても手間がかかってしまいます。

何かいい方法があれば、ぜひご指導ください。
本やインターネットでも調べたのですが、なかなか載っていません。
宜しくお願いします。








[ メッセージ編集済み 編集者: 未記入 編集日時 2007-07-06 19:09 ]

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-07-06 19:13 ]
1

スキルアップ/キャリアアップ(JOB@IT)