وعليك السلام ورحمة الله وبركاته
اخي الكريم بالاضافة الى ماذكره الاخ سعود مشكورا توجد طرق اخرى
منها ان تقوم بالتصريح عن UserControl1 و UserControl2 كـ Public في قسم التصاريح العامة التابع للفورم
مثال:
كود :
Public Class Form1
Public user1 As New UserControl1
Public user2 As New UserControl2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Panel1.Controls.Clear()
Panel1.Controls.Add(user1)
user1.Dock = DockStyle.Fill
End Sub
ثم عدل الكود الموجود في
UserControl1 ليكون كما يلي:
كود :
Public Class UserControl1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form1.Panel1.Controls.Clear()
Form1.Panel1.Controls.Add(Form1.user2)
'Form1.user1.Dock = DockStyle.Fill
End Sub
End Class
وفي الـ UserControl2
كود :
Public Class UserControl2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form1.Panel1.Controls.Clear()
Form1.Panel1.Controls.Add(Form1.user1)
' او يمكنك استدعاء حدث الضغط على الزر الموجود في فورم 1
'Form1.Button1.PerformClick()
End Sub
End Class
كما توجد طريقة اخرى وهي ان تقوم بوضع كلا العنصرين داخل Form1.Panel بحيث يكون الـ UserControl2 في الاسفل وفوقه UserControl1
استبدل الكود الموجود في فورم 1 بالتالي
كود :
Public Class Form1
Public user1 As New UserControl1
Public user2 As New UserControl2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Panel1.Controls.Clear()
Panel1.Controls.Add(user1)
Panel1.Controls.Add(user2)
user1.Dock = DockStyle.Fill
End Sub
End Class
استبدل كود الضغط على الزر في الـ UserControl1 بالتالي:
كود :
Public Class UserControl1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.SendToBack()
'او يمكنك استخدام احد الاكواد التي في الاسفل بدل من الكود الذي في الاعلى
'Form1.user2.BringToFront()
'يجب استخدام كلا الكودين التاليين مع بعض
'Me.Visible = False
'Form1.user2.Visible = True
End Sub
End Class
الكود الخاص بالـUserControl2
كود :
Public Class UserControl2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.SendToBack()
' او يمكنك اتبدال الكود السابق باي واحد من التي في الاسفل فقط الغي تعليق الكود
'Form1.Button1.PerformClick()
'Form1.user1.BringToFront()
'يجب استخدام كلا الكودين التاليين مع بعض
'Me.Visible = False
'Form1.user1.Visible = True
End Sub
End Class