VB.NET-別のフォームのテキストボックスに書きこむには?


lki  2003-06-16 07:25:46  No: 107522

フォーム1のテキストボックスにフォーム2のボタンで書きこむにはどうしたら良
いのでしょう?フォーム2にフォーム1のインスタンスを宣言し、
変数.textbox1.text="aaa"
をフォーム2のボタンのサブプロージャに記述してみたんですが出来ませんでした。


岡田 之仁  2003-06-16 12:18:38  No: 107523

「VB.NET」開いたウィンドウを元のフォームのボタンで閉じるには
のサンプルで、Form1 に、書き込み用ボタンを追加し、Form2 には
テキストボックスを追加して下さい。

で、Form1 には・・・
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        objForm.TextBox1.Text = "TEST"

    End Sub

実行し、Form1 の追加したボタン3をクリックしますと、Form2の
テキストボックスに表示されませんか?

全てのフォームから共有したい場合は、objForm の宣言を、モジュール
にPublic宣言してやれば、どのフォームからでも、アクセス可能です。

試してみて下さい。

以上。


nanashi  2003-06-16 19:59:01  No: 107524

.NET初心者ってみんなフォームまたぎの操作でつまづくようですね。
変数やオブジェクトのスコープ範囲のこととか、クラスについてちょっとかじればすぐわかると思うんだけど……。

> フォーム2にフォーム1のインスタンスを宣言し

たぶん、新しいインスタンスを宣言しちゃってるんですね。
Form2で宣言したインスタンスはForm1ではあるんだけど、
現在表示されているForm1ではないと言う……。
試しにそこで宣言したForm1をShowするともう一つForm1が現れると思います。

岡田 之仁さんがおっしゃっているように標準モジュールに
Public宣言で各フォームのオブジェクトを用意しておくのが一番簡単だと思います。
もちろん、そこで宣言されたオブジェクト名でインスタンスを作成するか
参照をしてあげないといけませんが。


lki  2003-06-17 11:04:28  No: 107525

出来ました。ありがとうございます。
私はobjじゃなくてfrmを付けてみたのですがobjとfrmではどのような違いがあるのでしょうか?


lki  2003-06-17 11:31:25  No: 107526

すいません。6/17(火)02:04:28の書きこみは取り消してください。
二つだけのフォームでできたプロジェクトでは出来たのですが、
二つ以上のフォームがあるプロジェクトの中で別のフォームへの書きこみ
は出来ませんでした。


Loreley  2003-06-17 12:06:46  No: 107527

うーん、そちらの状況がどうなってるのかわかりません。
コードの一部を書いてみては?

>私はobjじゃなくてfrmを付けてみたのですが
これだと変数名の違いになると思います
As Object と As Formの違いのことを言っているのでしたら
ObjectはTextBoxやFormやClassなどさまざまなデータを与えられますが
FormはFormのデータしか与えることができません

VB.NETってModuleってあるんでしたっけ・・・ありますよね?
(Module1)
-------------------------
Public oForm1 As Object
-------------------------
というような変数をつくって、
(Form1)のロード時
(すいません.NETでの宣言がわかりません・・・。VB6までのもので書きます)
---------------------------------
Private Sub Form1_Load()
    Set oForm1 = Me 'Setって省略されたかも
Sub
---------------------------------
アンロードにもそなえ
---------------------------------
Private Sub Form1_QueryUnLoad()
    Set oForm1 = Nothing
Sub
----------------------------------
とすれば、
oForm1.TextBox1.Text="aaaa"

のようなアクセスができると思います。
申し訳ありませんが検証はしてません
.NET違うPCにはいってるんで・・・・

>変数やオブジェクトのスコープ範囲のこととか、クラスについてちょっとかじればすぐわかると思うんだけど……。
でもインスタンスとクラスの名前が同じというのがわかりにくいですよねー・・・(^^;
わかりにくいというかか、私には違和感があります


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加