• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定のフォームだけ別フォームからの参照がされません)

特定のフォームの参照がされない

このQ&Aのポイント
  • VB 2005, Framework2.0を使用している場合、特定のサブフォームだけ別フォームからの参照ができない問題が発生しています。この記事では、参照方法に関する問題の解決策について説明します。
  • VB 2005, Framework2.0を使用している際、特定のサブフォームだけ別フォームからの参照ができない現象に困っています。この記事では、この問題の原因と解決策について詳しく解説します。
  • 特定のフォームだけが、別フォームからの参照ができない問題に遭遇しています。VB 2005とFramework2.0を使用している場合に限られるものですが、この記事では、この問題に対する解決策を提案します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> VB6と同じようにインスタンスを作成しなくても参照できる様になった(略)参照方法として問題はない それは、フォームのインスタンスが1つの場合です。 インスタンスが複数ある場合、既定のインスタンスは使わないほうがよいです。 Dialog1のShowDialogでForm1のインスタンスを指定し、Dialog1側ではOwnerプロパティを使って文字列を渡すようにすれば解決できると思います。 Public Class Dialog1 Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click CType(Me.Owner, Form1).Label1.Text = Textbox1.text ' ここを修正 Me.Close() End Sub End Class 呼び出す際は Dim f As New Dialog1 f.StartPosition = FormStartPosition.CenterParent f.ShowDialog(Me) ' ここでForm1のインスタンスを指定 End Sub

heaven123
質問者

お礼

仰る通り、原因はサブフォームにインスタンスが複数(二つ以上)存在していると受け渡しが行えない様でした。 教えて頂いた方法で無事に文字列の参照することは出来ました。 ありがとうございました。 しかし、質問外ですが問題が発生しまして、サブフォームのコントロールの変更等が出来ませんでした。 そこで以下の方法で自己解決しました。 'サブフォーム Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim f As New Dialog1(Me) f.StartPosition = FormStartPosition.CenterParent f.ShowDialog() End Sub End Class 'ダイアログフォーム Public Class Dialog1 Dim f1 As Form1 Sub New(ByVal f As Form) f1 = f InitializeComponent() End Sub Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click F1.Label1.Text = Textbox1.Text '質問箇所の修正 'F1.Checkbox1.Checked = Ture 'サブフォームのコントロール変更 Me.Close() End Sub End Class