السلام عليك ورحمة الله اخي ابو روضه
اولا ضع اداة CheckBox داخل الفورم واجعلها غير مؤشرة
ثانيا في وقت التصميم قم بموضعة الاداة ListBox بحيث يكون الجانب الايمن لها ملاصق للجانب الايمن للفورم
ثالثا قم بتحجيم الاداة ListBox الى الحجم الاصغر لها
ثم انسخ الكود التالي:
كود :
Dim DefaultWidth As Integer
Dim LongWidth As Integer = 300
Dim Defaultleft As Integer
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
DefaultWidth = ListBox1.Width
Defaultleft = ListBox1.Left
End Sub
Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked Then
ListBox1.Width = LongWidth
ListBox1.Left = Me.Width - ListBox1.Width
Else
ListBox1.Width = DefaultWidth
ListBox1.Left = Defaultleft
End If
End Sub
لاحظ انه عند تشغيل البرنامج ثم التأشير داخل التشيك بوكس تصبح قيمة الخاصية ListBox.Width= 300 وهي القيمة العضمى والتي حددتها في الكود ضمن المتغير LongWidth
ولكي يبقى الـ ListBox في مكانه اي بمحاذاة الجانب الايمن فانا نعيد تموضع الـ ListBox.Left بحيث تساوي عرض الفورم ناقص عرض الـ ListBox
اما في حالة ازالة التاشير فتعود الخاصية ListBox.Width= DefaultWidth وانا اعطيتها القيمة 79 ويعود تموضع الـ ListBox.Left ليساوي القيمة المحفوظة في المتغير Defaultleft
ارجو ان يكون الكود واضح وان يكون هو ما اردت