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

MDI 子フォームから親フォームのテキストボックスを変更

分類:[.NET]

2003/10/31(Fri) 23:17:08 編集(投稿者)

はじめまして。コアラと申します。

vb.net初心者でありまして、恐縮なのですが、
質問させてください。

Mdiフォームの子フォームより親フレームにあるテキストボックスの
内容を書き換えるような仕組みを組み込みたいと思っております。

具体例でご説明いたしますと、
Form1をIsMdiContainer を trueにして
Form1にtextbox1 とbutton1 を配置。
textbox1のModifiers に public変更。

form1のbutton1Clickに

Dim NewMDIChild As New Form2()
NewMDIChild.MdiParent = Me
NewMDIChild.Show()

と書き、form2を子フォームとして表示できるようにしました。

form2には、button2を配置し、button2Clickに
Dim main As New Form1()
main.TextBox1.Text = "aaa"

と書き、form2のbutton2を押したら、親フォームであるform1の
textbox1がaaaと書き換わるつもりが・・・
「追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。」
とエラーが出まして・・・
newを取ったりしてみたりしたのですが・・・

初心者ゆえに 何がなんだか??で困っております。

ちなみに、form2のbutton2Clickに
MdiParent.Text = "a!" と書いてみると、親フォームのタイトル文字が
a! と書き換わるのですが、MdiParent.Textbox1.text="aaa"とは
書けません。強引に書いてみても「TextBox1はsystem.windows.forms.formのメンバではありません。」
と波波表示され 怒られちゃいます。

私自身勉強不足な点も自覚しているのですが、どうにも困っております。
諸先輩方々からのアドバイスを頂きたく。

宜しくお願いします。
> ちなみに、form2のbutton2Clickに
> MdiParent.Text = "a!" と書いてみると、親フォームのタイトル文字が
> a! と書き換わるのですが、MdiParent.Textbox1.text="aaa"とは
> 書けません。強引に書いてみても「TextBox1はsystem.windows.forms.formのメンバではありません。」
> と波波表示され 怒られちゃいます。

Option Strict Onに設定されているのでしょうか?

DirectCast(MdiParent, Form1).Textbox1.text="aaa"

と書いたらどうですか?
よねKENさんへ

> Option Strict Onに設定されているのでしょうか?
>
> DirectCast(MdiParent, Form1).Textbox1.text="aaa"
>
> と書いたらどうですか?

出来ました!
DirectCast ですね。ご指摘いただいてはじめて知った言葉です。
dimかprivate,publicぐらいしか知りませんでした。

もっと精進します。
よねKENさんのwebページの「型変換の速度実験と考察」などを見て勉強させていただきます。

しかしなぜ、dimではMdiparentが定義できないのに、DirectCastだと
定義できるのでしょうか?不思議です。

何はともあれ、要望は解決いたしました。
ありがとうございました。 取り急ぎご一報まで。
解決済み!

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