フォーム間の値の受け渡しをしたいのですが、当初はform1からform3へ変数を渡すことしか考えていませんでしたので、form1からモーダルフォームとしてform3を開く(つまりこれはform1がform3のオーナーフォームになるということですよね?)ことで解決しておりました。
ソースコードが以下です。
vb
1Public Class form1 2 'モーダルフォームとしてフォーム3を開く。受け渡すためにテキストボックス1にnameを入れておく 3 Private Sub btn1_Click(sender As Object, e As EventArgs) Handles btn1.Click 4 TextBox1.Text = name 5 Dim f As New form3 6 f.ShowDialog(Me) 7 f.Dispose() 8 End Sub 9End Class 10 11Public Class form3 12 'フォーム1のテキストボックスからnameを取得する 13 Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load 14 Dim str As String = CType(Me.Owner, form1).TextBox1.Text 15 End Sub 16End Class
しかし、今新たにform2を作り、同じくform2をform3のオーナーフォームにして値を受け渡そうと思っていたら、form3のオーナーフォームが2つになってしまったことが原因なのか、エラーがでるようになってしまいました。
vb
1'form1,2からform3の開き方は同じ 2 3Public Class form3 4 'if文でform1,2のどちらかからstrに値を渡す 5 Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load 6 Dim str As String = CType(Me.Owner, form1).TextBox1.Text 7 if str = "" then 8 str = CType(Me.Owner, form2).TextBox1.Text 9 End If 10 End Sub 11End Class
しかしこれではエラーが起きます
エラー文章は以下です。
「System.InvalidCastException: '型 'sumple.form2' のオブジェクトを型 'sumple.form1' にキャストできません。'」
エラー文章のようにform2からform1にキャストする気はないのですが、プログラムにはそう取られている?みたいだと思うのですが、解決策が分かる方教えていただけませんか?
Visual Studio 2019
バージョン:Windowsフォームアプリケーション
フレームワーク:.NET Framework4.7.2
回答2件
あなたの回答
tips
プレビュー