フォーム1のテキストボックスにフォーム2のボタンで書きこむにはどうしたら良
いのでしょう?フォーム2にフォーム1のインスタンスを宣言し、
変数.textbox1.text="aaa"
をフォーム2のボタンのサブプロージャに記述してみたんですが出来ませんでした。
「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宣言してやれば、どのフォームからでも、アクセス可能です。
試してみて下さい。
以上。
.NET初心者ってみんなフォームまたぎの操作でつまづくようですね。
変数やオブジェクトのスコープ範囲のこととか、クラスについてちょっとかじればすぐわかると思うんだけど……。
> フォーム2にフォーム1のインスタンスを宣言し
たぶん、新しいインスタンスを宣言しちゃってるんですね。
Form2で宣言したインスタンスはForm1ではあるんだけど、
現在表示されているForm1ではないと言う……。
試しにそこで宣言したForm1をShowするともう一つForm1が現れると思います。
岡田 之仁さんがおっしゃっているように標準モジュールに
Public宣言で各フォームのオブジェクトを用意しておくのが一番簡単だと思います。
もちろん、そこで宣言されたオブジェクト名でインスタンスを作成するか
参照をしてあげないといけませんが。
出来ました。ありがとうございます。
私はobjじゃなくてfrmを付けてみたのですがobjとfrmではどのような違いがあるのでしょうか?
すいません。6/17(火)02:04:28の書きこみは取り消してください。
二つだけのフォームでできたプロジェクトでは出来たのですが、
二つ以上のフォームがあるプロジェクトの中で別のフォームへの書きこみ
は出来ませんでした。
うーん、そちらの状況がどうなってるのかわかりません。
コードの一部を書いてみては?
>私は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にはいってるんで・・・・
>変数やオブジェクトのスコープ範囲のこととか、クラスについてちょっとかじればすぐわかると思うんだけど……。
でもインスタンスとクラスの名前が同じというのがわかりにくいですよねー・・・(^^;
わかりにくいというかか、私には違和感があります
ツイート | ![]() |