- ベストアンサー
Form間での値の受け渡しについて
質問ばかりですみません。 Form3で使用している変数filenameの値を Form1から指定したのですが、 うまくいきません。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
モジュールを作られてはいかがでしょうか? 私はだいたいこういう変数はモジュールで宣言してます。 (エラーにばっかり目が行ってました(^^;) プロジェクト→新しい項目の追加→モジュールを選択 モジュールにてfilenameを宣言。 Public filename As String Form1ではfilename = "rectmp.wav"のみで、 Form3でもfilenameを参照できると思います。 MediaPlayerはごめんなさい。わかりません。
その他の回答 (3)
- wa_ka_rm
- ベストアンサー率42% (6/14)
#1さんの補足から、Form1でForm3のオブジェクトを作っていないから・・・とか? Form3でPublicで宣言しておいてForm1にて Dim frm As New Form3 frm.filename = "~"
お礼
書くところが無かったので、お礼のメッセージに 書かせていただきます。 Form1で frm.filename = "rectmp.wav" If frm.filename = vbNullString Then Label4.Text = "frm.filenameはNULL" Else Label4.Text = frm.filename End If として調べたところ、NULLではなく、rectmp.wavが frm.filenameに格納されていました。 しかし、Form3で If filename = vbNullString Then Label1.Text = "null" End If として調べたところ、NULLになっていました。 やはり引渡しが上手く行ってなかったようです・・
補足
返信有難うございます。 Public Class Form1 Inherits System.Windows.Forms.Form : Dim frm As New Form3() 中略 Public Sub listenButton_Click(・・・) ・・・ frm.filename = "rectmp.wav" End Sub これで良いでしょうか? 過去に書いたようなエラーは解消されました! 有難うございました。 しかし、Form3で Public Sub Button2_Click(・・・)・・・ AxMediaPlayer1.FileName = filename AxMediaPlayer1.Play() End Sub としてfilenameをMediaPlayerで再生 しようとすると「エラーを特定できません」 というエラーになってしまいました・・・
- mfuku
- ベストアンサー率50% (173/345)
#1の者です。 .NETなのですね。 VB6のつもりで回答しておりました。 .NETとVB6では同じVBでも言語仕様が大きく異なりますので私が回答した方法では.NETではうまく行かないと思います。 残念ながら、.NETは手元にはなく、責任ある回答はできかねますので、他の方からの回答をご期待下さい。 すみません・・。
お礼
いえいえ、本当に有難うございました! これからもよろしくお願いします。
- mfuku
- ベストアンサー率50% (173/345)
Form3に フォームレベルで Public 変数名 As データ型 と宣言し、 From1では Form3.変数名 = 値 という形で指定すれば、Form3で宣言した変数に他のフォームから値を指定することができます。
補足
返信有難うございます! 質問が上と2つ重複してしまってすみません。 Form3で Public Class Form3 Inherits System.Windows.Forms.Form Public filename As String : として、Form1で Form3.filename = "rectmp.wav" としてみたのですが、これで良いでしょうか? すると、Form3.filenameのところで「非共有 メンバを参照するには、オブジェクト参照 が必要です。」というエラーがでてしまいます。 ちなみに環境は.Netなのですが、それが原因 なのでしょうか・・・。
お礼
で、で、できました!!!! 有難うございました!!!