السلام عليكم
كما فهمت هو أنك تريد أن تضيف أكثر من صورة وعند الضغط على كل صورة تعرض في مربع صور ( PictureBox ) وتعرض معها نص في ليبل ( Label )
- هنا أنت تحتاج إلى أن تطور أداة تقوم بهذا العمل وليس استخدام مربع الصور ( Picture Box ) فقط
استخدم التالي : هذا Class اسمه MyImage
كود :
Public Class MyImage
Private WithEvents Pic As New System.Windows.Forms.PictureBox
Private p_text As String
Private p_pic_viewer As PictureBox
Private p_label As Label
Public Sub New(ByVal pic_viewer As PictureBox, ByVal _label As Label)
' pic_viewer هو مربع الصور الذي نقوم بعرض الصورة المختاره فيه
p_pic_viewer = pic_viewer
' _label هو مربع النص الذي سيظهر فيه نص ما عند الضغط على الصورة
p_label = _label
End Sub
' هذه الدالة تقوم بإنشاء مربع الصور الذي نريده على الفورم أو اي اداة
Public Sub CreatePicture(ByVal main_container As Control, ByVal img As Image, ByVal text As String, ByVal img_size As Size)
' main_container هو المكان أو الأداة التي نريد أن نضيف إليها الصورة مثال - الفورم
Pic.Image = img
Pic.Size = img_size
Pic.SizeMode = PictureBoxSizeMode.StretchImage
p_text = text
main_container.Controls.Add(Pic)
End Sub
Private Sub Pic_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Pic.Click
p_label.Text = p_text
p_pic_viewer.Image = Pic.Image
End Sub
End Class
يستخدم بهذه الطريقة :
مثلا يوجد لدي 4 صور في My.Resources في مشروعي ويوجد لدي FlowLayoutPanel في الفورم واسمه flow :
كود :
Dim img1 As New MyImage(pic, lab)
img1.CreatePicture(flow, My.Resources.Jellyfish, "صورة 1", New Size(50, 50))
Dim img2 As New MyImage(pic, lab)
img2.CreatePicture(flow, My.Resources.Koala, "صورة 2", New Size(50, 50))
Dim img3 As New MyImage(pic, lab)
img3.CreatePicture(flow, My.Resources.Penguins, "صورة 3", New Size(50, 50))
Dim img4 As New MyImage(pic, lab)
img4.CreatePicture(flow, My.Resources.Lighthouse, "صورة 4", New Size(50, 50))
المثال في المرفقات