- PR -

サブフォームの計算結果をメインフォームのTextBox に入力したい。

1
投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-03-10 16:53
WindowsXP VB2005EEでWindowsアプリケーションを作っています。
質問内容はForm1にTextBox1とButton1を配置して、Button1を
押すとForm2(小さな電卓)が表示されます。この電卓で掛算や加算
を行ってその結果を電卓の[=]ボタンを押すことでForm1のTextBox1
に入力したいので、[=]ボタンのイベントハンドラに次のように記載しま
した。
Form1.TextBox1.Text = CStr(電卓の答え)
結果は何も入力されません。どのようにすればよいのでしょう。
_________________
ina
会議室デビュー日: 2008/03/10
投稿数: 4
投稿日時: 2008-03-10 17:22
VB2005であれば
My.Forms.Form1.TextBox1.Text = (表示したい数値.ToString)
で表示出来ませんか?
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-03-10 17:48
inaさん、ありがとうございます。
早速試してみましたが、Form1のTextBox1には何も表示されません。ちなみに
Form2(小さな電卓)にLabel1を配置して次のように記述するとLabel1には電卓の答えが
正常に表示されます。
Label1.Text = CStr(HH)

また、Button1のイベントハンドラには次のように記述しています。
Dim Form1 As New Form1()
Form1.Show()
そしてForm1のTextBox1は、GroupBox1の中に配置しています。

_________________
「Label1には電卓の答えが」を追加

[ メッセージ編集済み 編集者: One.net 編集日時 2008-03-10 17:50 ]

[ メッセージ編集済み 編集者: One.net 編集日時 2008-03-10 18:03 ]
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-03-10 19:07
さかもとと申します。

http://dobon.net/vb/dotnet/form/accessanotherformdata.html

上記URLで説明されていることでしょうか?
_________________
------------------------------------------
拝啓、さかもとと申します♪
ina
会議室デビュー日: 2008/03/10
投稿数: 4
投稿日時: 2008-03-10 22:01
Form1を表示した状態でForm2を開き(Form1は開いたままかHideする)、計算後Form2を
CloseしてTextBox1を確認する場面を想定していました。
もしForm1がVS2005Express Editionのデザインビューで作成さてれいるなら、スコープはFriendで作成されているはずですので、特別にプロパティを設定しなくても
Dim Form1 As New Form1() してから
Form1.TextBox1.Text = CStr(電卓の答え)  して
Form1.Show() すれば出来るはずですが。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-03-10 22:38
とりあえず、解決したいないなら:
Form1 に加える
(てけとーに省略しています)
コード:
Class Form1
    Public Sub SetAnswer(ByVal String Answer)
        TextBox1.Text = Answer
    End Sub

    Public Form2を開く処理
        Form2 frm = New Form2()
        frm.Show(Me)
    End SubOrFunction
End Class


Form2 に加える
コード:
Class Form2
    Private Form1 Form1Instance
    Public Overloads Sub Show(Form1 frm1)
        Form1Instance = frm1
        Show()
    End Sub

    =のボタンをクリックしたハンドラ
        Form1Instance.SetAnswer(CStr(電卓の答え))
    End Sub
End Class



根本的解決に向けて:
オブジェクト指向について、勉強してください。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-03-11 10:36
inaさん、さかもとさん、Jittaさん、ご回答ありがとうございました。
早速ご指導いただいた方法でテストを行っていましたので、お返事が遅くなって
しまいました。Jittaさんのいわれる「オブジェクト指向について」をもっと勉強
しなっければ反省しています。
さかもとさんのご提示いただきましたサイトもまだまだ理解できる実力がなく、
何回も読み返してみます。結局このサイトの
「フォームが1つしか表示されないようにする」の "My.Forms.Form1.Sow()" で
Form1を開き、inaさんの指摘されました以下のコードを使いました。
My.Forms.Form1.TextBox1.Text = (表示したい数値.ToString)
実際にフォームが1つしか表示しないようにすると何が問題なのかをまだ理解
できていませんが、とりあえず使うこととしまし、正常に動作させることが
出来ました。皆様ありがとうございました。

_________________
1

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