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

السبت، 19 أكتوبر 2013

تغيير ارتفاع مربع النص مفرد السطر


س: كيف يمكن تغيير ارتفاع مربع النص الذي يعرض سطرا واحدا فقط؟

 

ج: في الوضع الافتراضي يعرض مربع النص TextBox سطرا واحدا فقط، وذلك لأن للخاصية MultiLine القيمة False.

وفي هذه الحالة لو حاولت تغيير ارتفاع مربع النص من مصمم النموذج أو من الكود، فلن يحدث له أي تغيير، لكنه سيأخذ تلقائيا الارتفاع المناسب لحجم الخط.. لهذا ستجد أن الطريقة الوحيدة لتغيير الارتفاع هي تغيير حجم الخط!

هناك حل آخر هو أن تجعل مربع النص متعدد الأسطر MultiLine = True لتستطيع تغيير ارتفاعه.. لكن إدخال عدة سطور قد لا يناسب وظيفة مربع النص في برنامجك!

عامة هناك حل آخر بسيط.. فالسبب في عدم تغيير ارتفاع مربع النص مفرد السطر، هو أن للخاصية AutoSize القيمة True، لكن هذه الخاصية لا تظهر في نافذة الخصائص ولا في قائمة الإكمال التلقائي في محرر الكود، مما يجعلك تظن أنها غير موجودة في فئة مربع النص!.. لهذا إذا أردت تغيير ارتفاع مربع النص دون أن تجعله متعدد الأسطر، فعليك تغيير قيمة هذه الخاصية أولا.. مثال:

TextBox1.AutoSize = False

TextBox1.Height = 50

مع ملاحظة أن هناك سببا وجيها لمنعك من تغيير ارتفاع مربع النص منفرد السطر، وهو أن النص لن يغير موضعه ليتوسط الارتفاع الجديد، وبالتالي سيبدو مربع النص بشكل غير متناسق!

ولحل هذه المشكلة، يمكنك استخدام حيلة بسيطة، كالتالي:

-      ضع مربع النص على لوحة Panel.

-      اجعل مربع النص بلا إطار BorderStyle = None.

-      اجعل اللوحة مجسمة الإطار BorderStyle = Fixed3D.

-      اجعل خلفية اللوحة بيضاء مثل مربع النص BackColor = Color.White.

-      غير موضع مربع النص على اللوحة ليكون في منتصفها رأسيا.

-      غير عرض مربع النص ليكون مساويا لعرض اللوحة.

-  استخدم الخاصية Anchor الخاصة بمربع النص لتثبيت حافتيه اليمنى واليسرى بالنسبة للوحة.

-  ستحتاج لكتابة كود بسيط في الحدث Resize الخاص بمربع النص، لتوسيطه رأسيا كلما تغير الارتفاع.

بهذه الخدعة البصرية البسيطة، سيبدو كأنك حصلت على مربع نص منفرد السطر له ارتفاع أكبر J.. مع قدرتك على تغيير ارتفاع اللوحة ليبدو كأنك تغير ارتفاع مربع النص J.

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

إرسال تعليق

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

صفحة الشاعر