2016-03-30 18 views
1

我在解決方案文件中有3種形式。每個人都有一個公共類。3 Vb.net Forms - 我可以從一個獲得標題,但不能獲得其他標題?

(Form1中 - MainControlWindow類),(Form3 - ShaneTestFormVersion2類),(New_Popup_Chords - New_Popup_Chords類)

該程序在Form1中開始了在MainControlWindow類。我給它一個標題名稱,並將第二種形式ShaneTestFormVersion2類變暗爲frmSongDisplay2並顯示它。

 Me.Text = "Window_A" 
     Dim frmSongDisplay2 As New ShaneTestFormVersion2 
     frmSongDisplay2.Show() 

,然後在Form3.vb頁面上的ShaneTestFormVersion2類,我朦朧的最後形式的對話,第二個表格處理,同時暫停其開放:

 Me.Text = "Window_B" 
     Dim NewChordsPopup As New New_Popup_Chords 
     NewChordsPopup.ShowDialog() 

這一切工作正常和花花公子,直到我嘗試使用第三形式(NewChordsPopup)顯示的另外2個窗口標題:

MsgBox(ShaneTestFormVersion2.Text) 'Second Form opened 
    MsgBox(MainControlWindow.Text) 'First Form Opened 

的msgsboxes拿出作爲默認的窗口標題爲「Form3」不是「Window_B」,但msgbox的第一個窗口正常顯示爲「Window_A」

標題的設置都是一樣的,窗戶都是二維的,並且顯示方式相同。爲什麼ShaneTestFormVersion2在Form3中出現「Form3」而不是我分配的標題,「Window_B」

側面說明:

我也注意到,我可以訪問MainControlWindow變量(MainControlWindow.Var1)罰款(公衆VAR1),但不能訪問ShaneTestFormVersion2 varables(ShaneTestFormVersion2.Var1)沒有它是 「公共共享VAR1」 。

+0

您的實例被稱爲frmSongDisplay2,不ShaneTestFormVersion2。所以你想要frmSongDisplay2.Text。 – LarsTech

+0

它出現在藍色下劃線,並說frmSongDisplay2沒有聲明。我試圖從另一個表單中獲取該實例的標題,是否也將其隱藏在該頁面上? –

+0

你必須傳遞一個參考。它爲第一種形式工作是一個快樂的事故,因爲微軟試圖與舊的VB6架構兼容。 – LarsTech

回答

0

您需要傳遞參考。

在ShaneTestFormVersion2窗體中添加一個構造函數:

Public Class ShaneTestFormVersion2 
    Private mainForm As Form 

    Public Sub New(mainForm as Form) 
    InitializeComponent() 
    Me.mainForm = mainForm 
    End Sub 

然後在你的代碼,這將是:

MessageBox.Show(mainForm.Text) 

,或者您可以使用Owner屬性:

frmSongDisplay2.Show(Me) 

然後在ShaneTestFormVersion2表單中,您可以使用:

MessageBox.Show(Me.Owner.Text) 
+0

它仍然沒有看到它。所以我把你的構造函數我的第三種形式,並添加(我)參數的第二個,它似乎工作:) –

0

我想在你的主窗體中發生了什麼,你聲明新窗體是私有的,因此其他窗體將無法看到對方。將該表單聲明爲朋友,並參考它,如下所示

嘗試更改您的聲明..

Dim frmSongDisplay2 As New ShaneTestFormVersion2 

到..

Friend frmSongDisplay2 As New ShaneTestFormVersion2 

和..

MsgBox(ShaneTestFormVersion2.Text) 'Second Form opened 

到..

MsgBox(MaincontrolWindow.frmSongDisplay2.Text) 'Second Form opened