2011-11-19 85 views
1

從編程中抽了幾年後,我決定開始學習vb.net。我創建了一個包含圖片框的用戶控件。我在圖片框中添加了一些自定義屬性,用於保存數據庫中的一般字符串數據。以編程方式創建用戶控件的控件訪問屬性VB .NET

我的問題是,用戶控件在運行時編程創建,並在此期間將DoubleClick事件處理程序添加了對在用戶控件中的圖片框。

我需要能夠在創建用戶控件時設置圖片框的自定義屬性,這樣當雙擊控件(圖片框)時,我可以讀取這些值,但不確定如何訪問他們。

圖片框是用戶控件的整個大小,或者我只是將自定義屬性添加到用戶控件並將DoubleClick事件處理程序添加到該控件。但是,雙擊需要在圖片框上完成,因爲它佔用了整個用戶控件,除非有人想要在雙擊圖片框時觸發用戶控件的DoubleClick事件。

下面是一些代碼,我使用的用戶控件添加到編程的形式 -

hb_item = New PictureLoader 

With hb_item 
    .Name = "item_" & i 
    .Left = itemLeft 
    .Top = itemTop 
    .SetImageSizeMode = ImageLayout.Stretch 
    .SetLoadingImageSizeMode = ImageLayout.Stretch 
    .Size = New Size(100, 126) 
    .SetImage = BlobToImage(sql_reader("ThumbImage")) 
    .Visible = True 
    .SetHighlight(True) 
    .SetHighlightColor = Color.GreenYellow 
    .TextColor = Color.White 
    .CircleColor = Color.GreenYellow 

    '--- THIS UPDATES ONE OF THE CUSTOM PROPERTIES FOR THE PICTURE BOX 
    '--- CONTAINED WITHIN THE USER CONTROL 
    .SetID = "test" 

    AddHandler .picMainClick, AddressOf frmHome.HBItem_Click 
    AddHandler .picMainDoubleClick, AddressOf frmHome.HBItem_DoubleClick 
End With 

這裏是事件處理程序代碼我試圖從

訪問圖片框的自定義屬性
Public Sub HBItem_DoubleClick(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.DoubleClick 

    With sender 
     '--- THIS IS WHERE I WANT TO READ THE DATA IN THE CUSTOM PROPERTIES 
     '--- OF THE PICTURE BOX... SOMETHING SIMILAR TO THE FOLLOWING - 

     ' Database_ID is one of the custom properties of the sender (picMain 
     ' control on the user control) 
     MessageBox.Show(.Database_ID) 
    End With 
End Sub 

編輯:得到這一切工作,謝謝你的一切。所需要的只是將發件人轉換爲像所述的實際圖片框,我只是想方設法深入瞭解事物。一個簡單的代碼一行是所有需要在事件處理程序 -

Dim pb As xPictureBox = CType(sender, xPictureBox) 

然後,所有的自定義屬性可以使用pb.property_here訪問。

回答

1

senderSystem.Object型的 - 你需要轉換(轉換)發送到它實際上是類型(在你的情況,你的自定義用戶控件),即:

Dim myControl As MyCustomControl = CType(sender, MyCustomControl) 

With myControl 
    MessageBox.Show(.Database_ID) 
End With 
+0

它投射到用戶控件類型(PictureLoader)只允許我訪問控件本身的屬性。我需要訪問用戶控件上的圖片框(在這種情況下,發件人是用戶控件中的圖片框)。 –

+0

您應該能夠通過'FindControl'方法獲得用戶控件上的任何控件。您需要將返回的控件投射到一個「PictureBox」。 – Tim

+0

動態創建了從查詢到數據庫的每個返回結果的用戶控制,糾正我,如果我錯了,但你並不需要的控件名傳遞給FindControl方法?用戶控件中的每一個圖片框將具有相同的名稱...發件人對象是具有我需要閱讀,我只是無法弄清楚如何從事件處理程序訪問他們我的自定義屬性的圖片框。由於我對.net的最低限度的知識,我必須有一種我不知道的簡單方法。 –

相關問題