DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プロジェクト間、フォーム間のデータの受け渡し方法

環境/言語:[Visual Basic .NET; .NET Framework 1.1; Windows XP Home SP1]
分類:[.NET]

はじめまして、VB.NETをはじめて3ヶ月の初心者です。
プロジェクト間、フォーム間のデータの受け渡し方法について教えてください。

以下の
ソリューション: AAA.sln
プロジェクト: AAA.vbproj
フォーム: CCC.vb (Windowsフォーム)
コントロール: textbox1
の、
textbox1.textの値を

変数: EEE(string型)

に代入して、

以下の
ソリューション: AAA.sln
プロジェクト: BBB.vbproj
フォーム: DDD.vb (Windowsフォーム)
コントロール: textbox2
の、
textbox2.textに代入するにはどうしたらよいでしょうか。
参照設定の参照の追加や、ソース中にImportsなど追加して
試しておりますがうまくいきません。
どなたかご教授お願い致します。
■No3377に返信(CBさんの記事)
> はじめまして、VB.NETをはじめて3ヶ月の初心者です。
> プロジェクト間、フォーム間のデータの受け渡し方法について教えてください。
>
> 以下の
> ソリューション: AAA.sln
> プロジェクト: AAA.vbproj
> フォーム: CCC.vb (Windowsフォーム)
> コントロール: textbox1
> の、
> textbox1.textの値を
>
> 変数: EEE(string型)
>
> に代入して、
>
> 以下の
> ソリューション: AAA.sln
> プロジェクト: BBB.vbproj
> フォーム: DDD.vb (Windowsフォーム)
> コントロール: textbox2
> の、
> textbox2.textに代入するにはどうしたらよいでしょうか。
> 参照設定の参照の追加や、ソース中にImportsなど追加して
> 試しておりますがうまくいきません。
> どなたかご教授お願い致します。

・AAAプロジェクトをクラスライブラリプロジェクトにします。(DLL)
プロパティウィンドウでCCCフォーム上のtextbox1のModifierをPublicにしておきます。
・BBBプロジェクトにAAAプロジェクトを参照設定します。
・BBBプロジェクトのDDDフォームのどこかのイベントで、
AAAAプロジェクトのCCCフォームのインスタンスを作成しShowします。
このときCCCフォームのインスタンスを保持する変数はDDDフォームのPrivate変数とします(仮にXとする)。
後は、CCCフォームが表示されている状態の任意のタイミングで、X.textbox1.Textで
テキストボックスの値を参照できます。

#方法は書きましたが、Form上のコントロールを外部にそのまま公開するのではなく、
#Formにコントロールの情報などを取得するための専用のプロパティかメソッドをもうけた方がよいでしょう。
■No3387に返信(よねKENさんの記事)

よねKENさんも書かれていますが、プロパティを作成した方がいいと思います。

-----BBB.vb

    Public Property EEE(ByVal Value As String)
        Get
            Return textbox2.text
        End Get
        Set(ByVal Value)
            textbox2.text = Value
        End Set
    End Property

-----AAA.vb

    Dim tmpFrm As New BBB.DDD
    tmpFrm.EEE = textbox1.text
    tmpFrm.Show
TO よねKENさん、どらごらさん

アドバイス、大変有難うございます。
早速トライさせて頂きます。

■No3390に返信(どらごらさんの記事)
> ■No3387に返信(よねKENさんの記事)
>
> よねKENさんも書かれていますが、プロパティを作成した方がいいと思います。
>
> -----BBB.vb
>
> Public Property EEE(ByVal Value As String)
> Get
> Return textbox2.text
> End Get
> Set(ByVal Value)
> textbox2.text = Value
> End Set
> End Property
>
> -----AAA.vb
>
> Dim tmpFrm As New BBB.DDD
> tmpFrm.EEE = textbox1.text
> tmpFrm.Show
>
TO よねKENさん、どらごらさん

アドバイス、ありがとうございました。
処理のほう実現できました。
大変参考になりました。

また、新たな疑問も沸いてきまして
いろいろトライして解決できない事があります。
別Titleで投稿させて頂きますので、もしよろしければ
またアドバイスお願い致します。

■No3397に返信(CBさんの記事)
> TO よねKENさん、どらごらさん
>
> アドバイス、大変有難うございます。
> 早速トライさせて頂きます。
>
> ■No3390に返信(どらごらさんの記事)
>>■No3387に返信(よねKENさんの記事)
>>
>>よねKENさんも書かれていますが、プロパティを作成した方がいいと思います。
>>
>>-----BBB.vb
>>
>> Public Property EEE(ByVal Value As String)
>> Get
>> Return textbox2.text
>> End Get
>> Set(ByVal Value)
>> textbox2.text = Value
>> End Set
>> End Property
>>
>>-----AAA.vb
>>
>> Dim tmpFrm As New BBB.DDD
>> tmpFrm.EEE = textbox1.text
>> tmpFrm.Show
>>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板