从编程开始几年后,我决定开始学习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访问所有自定义属性。
答案 0 :(得分:1)
sender
属于System.Object
类型 - 您需要将发件人转换(转换)为实际类型(在您的情况下,您的自定义用户控件),即:
Dim myControl As MyCustomControl = CType(sender, MyCustomControl)
With myControl
MessageBox.Show(.Database_ID)
End With