2011-12-06 130 views
1

對我來說確定它有點奇怪。我從來沒有用過這樣的東西。我有一個名爲VBProject它有兩個文本框和一個自定義控件名爲MyControl它是在另一個項目中創建的。 MyControl的項目裏面有一個表格,名爲Form3。當我的控件加載時,它需要找到我的VBProject中的所有控件,並將它們添加到列表框,它位於Form3中。然後顯示Form3。最後ListView需要顯示文本框的名稱和文本,但它什麼也沒有顯示。這裏是我的代碼:如何從自定義控件中訪問表單控件

MyControl的Load_Event:

Dim i As Integer = 0 
MessageBox.Show("Control Count:" + Me.Controls.Count.ToString) 
For Each MyObject In Me.Controls 
    If TypeOf MyObject Is TextBox Then 
     MessageBox.Show("Found a textbox") 
     Dim lviNew As New ListViewItem 
     lviNew.Text = i.ToString() 
     lviNew.SubItems.Add(MyObject.Name) 
     lviNew.SubItems.Add(MyObject.Text) 
     Form3.SetVal(lviNew) 
     i += 1 
    End If 
Next 
Form3.Show() 

在Form3

Public Sub SetVal(ByVal lviNew As ListViewItem) 
    lstName.Items.Add(lviNew) 
End Sub 

項目的圖片

012 SETVAL功能

答:VBProject-B:MYControl執行-C:MyControl的項目的Form3

我希望解釋得很好。感謝您的時間。

+0

你能解釋一下**不**工作嗎?我猜列表視圖沒有顯示任何內容,但這是一個猜測。 –

+0

你說得對。這正是我的問題。 –

+0

「當MyControl加載時」是什麼意思?代碼位於何處?在UserControls加載事件?順便說一句,你可以添加圖像到你的問題,所以你不需要一個外部的來源。 –

回答

2

可以通過使用

Me.ParentForm.Controls 

其可以例如是一個面板可以通過

Me.Parent.Controls 

訪問父的控制訪問自定義控制位於形式的控制您使用了Me.Controls,它引用了自定義控件本身擁有的控件。

我並不完全清楚,但是在控件的加載事件中使用它時可能會出現問題,因爲父窗體的其他控件可能會在自定義控件之後加載。

+0

完美作品:)謝謝! –

+0

你是對的我會改變load_event –

相關問題