- - PR -
別プロジェクトの「Exe」画面、「Dll」画面間のデータ連携
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-16 11:56
Strider です。 よろしくお願いします。
VB2005 にて同一ソリューション内の第一プロジェクトにて System.Windows.Forms.Form で作成した画面(FormZ : 拡張子「EXE」)があります。 この画面上に配置されたボタンをクリックすると、第二プロジェクトで作成された 画面(FormY : 拡張子「DLL」)を起動するように現在なっております。 この FormY.dll の画面上にある DataGridView コントロールで選択した一行の データを呼び出し側 FormZ.exe へ渡したい場合の手法が分かりません。 どなたか良い方法をご存知でしたらご教授願います。 | ||||
|
投稿日時: 2006-08-16 12:11
参照設定(プロジェクト参照含む)している限り、プロジェクトが別かどうかは Friend キーワードくらいしか影響しませんが。
普通は FormY がそういう値を返すプロパティまたはメソッドを Public で公開しますね。 // 丁度 OpenFileDialog の実装です。 ただ、FormY をモーダル (ShowDialog) で呼び出すのかモードレス (Show) で呼び出すのかで方法も選ぶ必要がありますが。 | ||||
|
投稿日時: 2006-08-16 12:29
少し質問の記述不足でした。 FormZ.exe の第一プロジェクトは参照設定に
第二プロジェクトを追加してあり、ボタンをクリックした時には FormY.dll を 「ShowDialog」でモーダル表示しています。 FormY 画面の DataGridView コントロールで一行選択した後に、 FormY の「選択」ボタンを押して FormZ に選択行データを反映したい(※1)のです。 ※1の処理の記述は FormY を閉じて、FormZ に戻ってからですか? それともFormYの「選択」ボタン押下時のイベント内で FormZ へデータを渡す処理を 記述するべきですか? また、この二画面のデータ連携をするには何か具体的なメソッドとかありますか? | ||||
|
投稿日時: 2006-08-16 12:40
Hongliang さんの仰る通り、閉じてからだとこんな感じです。 要は、FormY が結果を返してやるインターフェースがあればよい。 閉じないで反映となると、もう少し工夫が必要ですね。 FormZ のインスタンスを FormY に渡すのが定石ですが、参照が廻るので FormY は「型FormZ」を使えない。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-08-16 13:24
因人さん、Hongliangさん返信ありがとうございました。
FormY.dll に結果を返すインターフェースを記述して FormY を閉じてから FormZ.exe へのデータ反映できました。 ドサクサに紛れてもう一つ質問なのですが、 FormY.dll の "「選択」ボタンが押された。" という判断は FormZ.exe で認識する良い方法はありますか? |
1