س:
كيف يمكن تعطيل أحد أشرطة الأداة TabControl؟
ج:
كل صفحة من صفحات الأداة TabControl هي من
النوع TabPage.. ورغم أنك لن تجد
الخاصية Enables في
نافذة الخصائص أو قائمة الإكمال الذكي عند كتابة الكود، فإن هذه الأداة تمتلك هذه
الخاصية، لأنها موروثة من الفئة الأم Control.. لهذا يمكنك أن تكتب مثلا:
TabPage2.Enabled
= False
لكن
على عكس ما تتوقع، هذا سيعطل الصفحة وما عليها من أدوات، ولكنه لن يعطل الشريط Tab الخاص بالصفحة أعلى الأداة TabControl.. لهذا إن كنت
تهدف إلى منع المستخدم من عرض الصفحة نفسها، فيمكنك أن تستخدم الحدث TabControl. Selecting الذي ينطلق عند
ضغط شريط إحدى الصفحات، وفي هذا الحدث يمكنك أن تلغي عرض صفحة معينة، كالتالي:
If
e.TabPage Is TabPage2 Then e.Cancel = True
طبعا
تحتاج لإضافة شرط آخر يوضح متى يمكن السماح بعرض هذه الصفحة، وذلك تبعا لوظيفة
برنامجك.. وأبسط طريقة لفعل هذا هي الجمع بين الطريقتين السابقتين، بمنع عرض
الصفحة إذا كانت غير فعالة، كالتالي:
If
e.TabPage Is TabPage2 Then e.Cancel = Not TabPage2.Enabled
وإذا
أردت تغيير لون شريط الصفحة، بحيث تشعر المستخدم أنها معطلة، فيمكنك أن تتدخل أنت
لرسمه، بتغيير قيمة الخاصية DrawMode
كالتالي:
tabControl1.DrawMode
= TabDrawMode.OwnerDrawFixed
وكتابة
معالج للحدث DrawItem تقوم
فيه برسم شريط الصفحة.
أما
إن كنت تريد حلا يمنع المستخدم من ضغط شريط الصفحة، فيمكنك أن تزيل الصفحة من أداة
الأشرطة باستخدام الكود التالي:
TabControl1.TabPages.Remove(TabPage2)
وعندما
تريد استخدامها، يمكنك إضافتها مرة أخرى:
TabControl1.TabPages.Add(TabPage2)
ولا
تحاول استخدام الوسيلة TabPage2.Hide الخاصة
بالصفحة، فهي لن تعمل!
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.