Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

何度となく登場する FAQ「Form2からForm1にあるIDの参照方法」


過去ログをみないで質問するのは如何なもんか... という意見に賛同です。その際の回答例として以下があります。

▼例▼

Public Class Form1
    Inherits System.Windows.Forms.Form
    Private ID_ As String = "ABCDEF"
    Public ReadOnly Property ID() As String
        Get
            Return ID_
        End Get
    End Property
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim fm2 As New Form2
        fm2.id = ID
        fm2.Show()
    End Sub
End Class
Public Class Form2
    Inherits System.Windows.Forms.Form
    Private id_ As String
    Public Property id() As String
        Get
            Return id_
        End Get
        Set(ByVal Value As String)
            id_ = Value
        End Set
    End Property
    Private Sub getID_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles getID.Click
        MessageBox.Show(id)
    End Sub
End Class
▲例▲
前提は Form2で使う情報がForm2のインスタンス化以前に判別している ことですね。
Form2とForm1がパラレルで動作している時の同期は取れません。

ということで, Form2に

Private m_form1 As Form1
Public Sub New(ByVal fr As Form1)
  MyBase.New()
  m_form1 = fr
  InitializeComponent()
End Sub

form1側:
 form2 = new Form2(me)
 form2.show


を実装して,  m_form1.xxx で  Form1の内容を操作するように言われています。

動作するのですが、一抹の不安定感を感じるのです。 Formが10枚に増え,各々が Form1のデータを共有する,加えて,Form3の情報を Form4,5,6で使うとなると,各画面で Form_xのPropertyを作るの?
なんかクラス間がスパゲティになる気がして嫌。
 グローバルクラスを一つ作って,(モジュールは嫌。VBでも使わない。) そのクラスをForm間で共有するほうが良いと思っています。

クラスに他のクラスインスタンスを保持するのは Has-A の関係で当然ありなんですが, Form2.m_form1.LabelText = Form2.TextBox1.Text という記述にイマイチ感があります。
いいのですかね。(ognacが変なのかな)

投稿日時 : 2006年11月8日 20:12

Feedback

# re: 何度となく登場する FAQ「Form2からForm1にあるIDの参照方法」 2006/11/08 20:37 じゃんぬ

> Form2.m_form1.LabelText = Form2.TextBox1.Text

どっちが親なのかわからないですね。

# re: 何度となく登場する FAQ「Form2からForm1にあるIDの参照方法」 2006/11/08 23:49 まどか

>form1側:
> form2 = new Form2(me)

これって仕様上の循環参照。。。
かつ、Form2の再利用性を完全否定してますよね。

# re: 何度となく登場する FAQ「Form2からForm1にあるIDの参照方法」 2006/11/09 0:15 ognac

お二人様、ご指摘ありがとうございます。
コピペのミスであって欲しい. 元のソースを引用するとき整形ミス.....でもなかった..潜在バグもあった....orz.
(だから, インスタンス間をスパゲティ結合するのは嫌)

# LVlQzkrQCNqFoRmlE 2011/12/27 6:03 http://www.hansensurf.com

Not bad post, leave it at my bookmarks!...

# AhTSCXSQZbvOPb 2011/12/28 6:48 http://www.seokiwi.com/

Good! Wish everybody wrote so:D

# FKdIOSBMpDL 2011/12/29 2:54 http://www.seokiwi.com/

Hooray! the one who wrote is a cool guy..!

# BOKJtbJYkVgLQVn 2012/01/14 2:50 http://www.avidelectrical.com.au/

comment6

# wAFcAvwdNdVo 2012/01/14 2:53 http://www.michelegreenmd.com/

comment1

タイトル
名前
Url
コメント