المتابعون للمدونة

الخميس، 10 أكتوبر 2013

تعطيل أحد أشرطة الأداة TabControl


س: كيف يمكن تعطيل أحد أشرطة الأداة 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 الخاصة بالصفحة، فهي لن تعمل!

 

 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر