2016-05-16 47 views
0

注:類似的問題,可以發現here來自多個用戶控件傳遞值

我如何通過從多個用戶控件值?上面鏈接中的問題提供了一個答案,但是我發現答案在我的情況下非常乏味,並且傳遞值時有延遲。 (我不得不在UserControl1和UserControl2之間循環多次,而在UserControl1中提交文本框或標籤的更改以查看UserControl2中任何值的傳遞。)

無論哪種方式,因爲我有多個UserControl,其中每個許多文本框,標籤和組合框,我非常不喜歡爲每個控件創建單獨的子例程和事件處理函數,並且我想要傳遞一個值。

有沒有更好的方法?我想是這樣......

'In UserControl10 
Dim UserControl1 As New UserControl1 
Dim UserControl2 As New UserControl2 
Dim UserControl3 As New UserControl3 

UC10Label1.Text = UserControl1.Label1.Text 
UC10TextBox1.Value = UserControl2.TextBox1.Value 
UC10ComboBox1.Text = UserControl3.ComboBox1.SelectedItem 

上面明顯的代碼不工作,我會想象的樣子,我怎麼能實現與最少的代碼量類似的東西?

編輯:我有我的「意見」使用多個自定義用戶控件。在每個UserControl中都有標籤,文本框,組合框。我有一個Panel1,在觸發事件中,將在面板中顯示UserControl(1-9);每個用戶控件一次顯示一個並取決於事件。我希望能夠將每個UserControl(1-9)的值傳遞給UserControl10的標籤,文本框或組合框等。

+2

「我怎麼能傳遞值從多個用戶控件?」這個問題幾乎沒有意義。你究竟想要做什麼?請提供完整且清晰的解釋,說明您正在努力實現的目標。請記住,用戶控件只是一個控件,因此可以像其他任何控件一樣對待它們。從用戶控件獲取多個數據項沒有什麼神奇的方法。 – jmcilhinney

+0

@jmcilhinney抱歉,因爲不清楚。我編輯了我的問題。希望如果不是我爲自己的描述不足而道歉的話,那就更清楚了。(新的vb) – NuWin

回答

1

我在猜測最後三行不在Sub中。他們可能不工作,因爲他們正在執行表單之前執行。

如果你想在你的程序自動更新它們,你應該把它們放在一個子,但暫停的形式佈局,而他們要更新,然後在代碼完成恢復佈局。像這樣

Private Sub UpdateUserControls() 
    Me.SuspendLayout() 
    UC10Label1.Text = UserControl1.Label1.Text 
    UC10TextBox1.Value = UserControl2.TextBox1.Value 
    UC10ComboBox1.Text = UserControl3.ComboBox1.SelectedItem 
    Me.ResumeLayout() 
End Sub 

取決於當你想更新這些控件,您可以形式是通過將上述Sub在窗體的.Shown事件每按一次做到這一點。

或者你可以將其置於一個定時器的.tick事件自動執行,每隔一段時間。

或者,您可以選擇通過將代碼放在代碼中的某個位置來更新它們。

+0

謝謝你的回答。根據你的回答,我能夠加入類似的東西,並讓它起作用。 – NuWin