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

フォームのコントロールの値を設定する方法

分類:[.NET]

VB.net を始めて間もないです。
宜しくお願いします。

早速、質問ですが、
フォーム frmMain に TextBox1 と コマンドボタンを
配置しています。
コマンドボタンお押すと、標準モジュールの関数を呼び出して
frmMain の TextBox1のTextを変更しています。
TextBox1 の値は取得できるのですが
設定ができません。
また、表示位置の変更もできません。
下記のように作成しています。


Public Sub txtset()

Dim fm1 As New frmMain

fm1.TextBox1.Text = "ABCD"
    fm1.TextBox1.left=10
 
End Sub

エラーにもなりませんが、設定もできません。
frmMain の中では、TextBox1.Text = "ABCD" で
設定できます。 
宜しくお願いします。
■No159に返信(智也さんの記事)

旧掲示板に次のようなものがあります。

Moduleから呼び出したFormに書き込みをする場合
http://www.sky-j.com/viewlist.php?arg_forum_id=38&arg_thread_id=1042&arg_message_id=1042
■No160に返信(管理人さんの記事)
> ■No159に返信(智也さんの記事)
>
> 旧掲示板に次のようなものがあります。
>
> Moduleから呼び出したFormに書き込みをする場合
> http://www.sky-j.com/viewlist.php?arg_forum_id=38&arg_thread_id=1042&arg_message_id=1042

ありがとうございます。
早速、参考にして Modifiers を Public にしてみました。
しかしながら、値は変化しませんでした。
もちろん、旧掲示板のとおりに作成すればできました。
但し、
>---------------------------------
>Module Module1
>Public f As Form1
>Public Sub Main()
>f = New Form1()
>f.ShowDialog()
>Call sLabel
>end sub
>
>Public Sub sLabel()
>f.Label1.Text = "hogehoge"
>end sub
>----------------------------------
f.ShowDialog() でフォームが表示され次の
Call sLabel には進みませんので前後を逆にして試しました。

私の方では、フォームのボタンを押して
何度も、処理を行いますので
----------------------------------
Module Module1

Public fm1 As frmMain

Public Sub txtset()

fm1 = New frmMain

fm1.TextBox1.Text = "ABCD"
fm1.TextBox1.Left = 10
fm1.Refresh()

End Sub
----------------------------------
のように書いています。
Modifiers を Public にして、Refresh()もしてみましたが
変わらずです。

そもそも、VB6で作成したものを VB.NET に移行して
います。
フォーム内に書くと煩雑だと思い、標準モジュールに分散して
書いていました。
出来ないようであれば、全てフォーム内に移動を
考えたいと思います。
何か、お気付きの点がありましたらお願いします。
■No163に返信(智也さんの記事)
> ----------------------------------
> Module Module1
>
> Public fm1 As frmMain
>
> Public Sub txtset()
>
> fm1 = New frmMain
>
> fm1.TextBox1.Text = "ABCD"
> fm1.TextBox1.Left = 10
> fm1.Refresh()
>
> End Sub
> ----------------------------------

どこでfm1 を表示しているのでしょうか?
■No164に返信(管理人さんの記事)
> ■No163に返信(智也さんの記事)
>>----------------------------------
>>Module Module1
>>
>>Public fm1 As frmMain
>>
>> Public Sub txtset()
>>
>> fm1 = New frmMain
>>
>> fm1.TextBox1.Text = "ABCD"
>> fm1.TextBox1.Left = 10
>> fm1.Refresh()
>>
>> End Sub
>>----------------------------------
>
> どこでfm1 を表示しているのでしょうか?

お世話になります。
解決できました。
ありがとうございました。
以下、私なりに纏めました。

Formは2個作成してあります。
frmMenuとfrmMain です。
プログラムは、Main() からスタートし
ここで、2個のフォームのインスタンスを作成しました。
2個共に、Public で宣言してあります。(fm1,fm2)
Main()で frmMenu を表示します。
frmMenu のコマンドボタンを押すと
txtSet() を呼び出して、TextBoxの内容や位置を
標準モジュールから変更しています。
frmMain とfrmMenu で相互にコントロールを自由に
変更可能になりました。

Module Module1

Public fm1 As New frmMenu
Public fm2 As New frmMain

Public Sub main()

fm1 = New frmMenu
fm2 = New frmMain
fm1.ShowDialog()

End Sub


Public Sub txtSet()
'frmMenu の Button1_Click  から

fm1.TextA.Text = "ABCD"
fm1.TextA.Left = 10

End Sub

End Module

Modifiers は Friendのままでも使用できました。
以上です。
まだ、VB6からの移行でエラーが山積みです。
また、ご相談することがあるかと思います。
宜しくお願いします。
大変お世話になり、ありがとうございました。
解決済み!
2003/07/16(Wed) 09:39:28 編集(投稿者)

txtsetをコールする際に、引数としてTextBox1を渡してやり、
    Call txtset(TextBox1)

モジュール側で、
    Public Sub txtset(ByVal tb As TextBox)
        tb.Text = "ABCD"
        tb.Left = 10
    End Sub

だけでOKかと。。。
解決済み!

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