以编程方式创建的用户控件VB .NET访问控件的属性

时间:2011-11-19 20:27:13

标签: vb.net winforms user-controls

从编程开始几年后,我决定开始学习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 个答案:

答案 0 :(得分:1)

sender属于System.Object类型 - 您需要将发件人转换(转换)为实际类型(在您的情况下,您的自定义用户控件),即:

Dim myControl As MyCustomControl = CType(sender, MyCustomControl)

With myControl
    MessageBox.Show(.Database_ID)
End With