برمجة فئة لإنشاء عنصر تحكم مخصص VB.NET

click fraud protection

يمكن أن يكون بناء مكونات مخصصة كاملة مشروعًا متقدمًا للغاية. ولكن يمكنك إنشاء فئة VB.NET التي تحتوي على العديد من مزايا مكون مربع الأدوات بأقل جهد ممكن. إليك الطريقة!

للحصول على نكهة لما عليك القيام به لإنشاء مكون مخصص كامل ، جرب هذه التجربة:

-> افتح مشروع تطبيق Windows جديد في VB.NET.
-> أضف CheckBox من Toolbox إلى النموذج.
-> انقر فوق الزر "إظهار كافة الملفات" في الجزء العلوي من مكتشف الحل.

سيؤدي ذلك إلى عرض الملفات التي ينشئها Visual Studio لمشروعك (بحيث لا تضطر إلى ذلك). كحاشية سفلية تاريخية ، قام برنامج التحويل البرمجي VB6 بالكثير من الأشياء نفسها ، لكنك لم تتمكن من الوصول إلى الرمز لأنه تم دفنه في "رمز p" مترجم. يمكنك تطوير عناصر تحكم مخصصة في VB6 أيضًا ، لكن الأمر كان أكثر صعوبة وتطلب أداة خاصة قدمتها Microsoft لهذا الغرض فقط.

في التشكيل Designer.vb الملف ، ستجد أن الكود أدناه قد تمت إضافته تلقائيًا في المواقع الصحيحة لدعم مكون CheckBox. (إذا كان لديك إصدار مختلف من Visual Studio ، فقد يكون الرمز مختلفًا قليلاً.) هذا هو الرمز الذي يكتبه Visual Studio لك.

مطلوب من مكونات Windows Form Designer الخاصة _ كنظام. ComponentModel. IContainer'NOTE: الإجراء التالي مطلوب "بواسطة مصمم نماذج Windows" يمكن تعديله باستخدام مصمم نماذج Windows. لا تقم بتعديله باستخدام محرر التعليمات البرمجية.
instagram viewer
_Private Sub InitializeComponent () عني. CheckBox1 = نظام جديد. شبابيك. نماذج. CheckBox () أنا. SuspendLayout () '' CheckBox1 'Me. CheckBox1.AutoSize = True Me. CheckBox1.Location = نظام جديد. رسم. النقطة (29 ، 28) أنا. CheckBox1.Name = "CheckBox1".. . وهكذا دواليك ...

هذا هو الرمز الذي يجب عليك إضافته إلى البرنامج لإنشاء عنصر تحكم مخصص. ضع في اعتبارك أن كافة أساليب وخصائص عنصر التحكم CheckBox الفعلي موجودة في فئة يتم توفيرها بواسطة .NET Framework: النظام. شبابيك. نماذج. CheckBox. هذا ليس جزءًا من مشروعك لأنه مثبت في Windows لكافة برامج .NET. ولكن هناك كثيرا من ذلك.

نقطة أخرى يجب أن تكون على دراية بها هي أنك إذا كنت تستخدم WPF (Windows Presentation Foundation) ، تأتي فئة .NET CheckBox من مكتبة مختلفة تمامًا باسم النظام. شبابيك. ضوابط. تعمل هذه المقالة فقط لتطبيق Windows Forms ، لكن مبادئ الوراثة هنا تعمل مع أي مشروع VB.NET.

افترض أن مشروعك يحتاج إلى تحكم يشبه إلى حد كبير أحد عناصر التحكم القياسية. على سبيل المثال ، خانة اختيار غيرت اللون أو عرضت "وجهًا سعيدًا" صغيرًا بدلاً من عرض رسم "التحقق" الصغير. سنقوم ببناء فصل يقوم بذلك وسنوضح لك كيفية إضافته إلى مشروعك. في حين أن هذا قد يكون مفيدًا بحد ذاته ، فإن الهدف الحقيقي هو إظهار VB.NET ميراث.

لنبدأ الترميز

للبدء ، قم بتغيير اسم CheckBox الذي أضفته للتو oldCheckBox. (قد ترغب في إيقاف عرض "إظهار جميع الملفات" مرة أخرى لتبسيط Solution Explorer.) الآن أضف فئة جديدة إلى مشروعك. هناك عدة طرق للقيام بذلك ، بما في ذلك النقر بزر الماوس الأيمن على المشروع في Solution Explorer وتحديد "إضافة" ثم "فئة" أو تحديد "إضافة فئة" ضمن عنصر قائمة المشروع. تغيير اسم ملف الفئة الجديدة إلى newCheckBox للحفاظ على الأمور في نصابها الصحيح. أخيرًا ، افتح إطار التعليمات البرمجية للفصل وأضف هذا الرمز:

الفئة العامة newCheckBox يرث CheckBox Private CenterSquareColor As Color = Color. Red Protected Overrides Sub OnPaint (ByVal pEvent _ As PaintEventArgs) Dim CenterSquare _ As New Rectangle (3، 4، 10، 12) MyBase. OnPaint (pEvent) إذا أنا. فحص ثم pentent. الرسومات. FillRectangle (New SolidBrush (CenterSquareColor)، CenterSquare) End If End SubEnd Class

(في هذه المقالة وفي مقالات أخرى على الموقع ، يتم استخدام الكثير من عمليات متابعة الخطوط لإبقاء الخطوط قصيرة بحيث تتناسب مع المساحة المتوفرة على صفحة الويب.)

أول شيء يلاحظ حول كود صفك الجديد هو يرث الكلمة الأساسية. هذا يعني أن جميع خصائص وطرق VB.NET Framework CheckBox تعد جزءًا من هذا الأسلوب تلقائيًا. لتقدير مقدار العمل الذي يتم توفيره ، يجب أن تحاول برمجة شيء يشبه مكون CheckBox من البداية.

هناك شيئان رئيسيان يجب ملاحظتهما في الكود أعلاه:

الأول هو رمز يستخدم تجاوز لاستبدال السلوك .NET القياسي الذي قد يحدث ل OnPaint حدث. يتم تشغيل حدث OnPaint عندما يلاحظ Windows أنه يجب إعادة إنشاء جزء من الشاشة. مثال على ذلك هو عندما تكتشف نافذة أخرى جزءًا من شاشتك. يقوم Windows بتحديث العرض تلقائيًا ، ولكنه يستدعي حدث OnPaint في الكود. (يُطلق على حدث OnPaint أيضًا عند إنشاء النموذج في البداية.) لذلك إذا تجاوزنا OnPaint ، يمكننا تغيير طريقة ظهور الأشياء على الشاشة.

والثاني هو الطريقة التي ينشئ Visual Basic في CheckBox. كلما كان الوالد "محددًا" (أي ، أنا. التحقق يكون صحيح) ثم الكود الجديد الذي نوفره في فصل NewCheckBox سيعيد تلوين مركز CheckBox بدلاً من رسم علامة اختيار.

الباقي هو ما يسمى رمز GDI +. تحدد هذه التعليمة البرمجية مستطيلًا بنفس الحجم تمامًا مثل مركز خانة الاختيار وتلوينه باستخدام مكالمات أسلوب GDI +. تم تحديد "الأرقام السحرية" لوضع المستطيل الأحمر ، "المستطيل (3 ، 4 ، 10 ، 12)" ، بشكل تجريبي. لقد غيرته حتى بدا الأمر صحيحاً.

هناك خطوة واحدة مهمة للغاية تريد التأكد من أنك لا تتخلى عن إجراءات التجاوز:

MyBase. OnPaint (pEvent)

التجاوز يعني أن الكود الخاص بك سوف يوفر الكل من رمز لهذا الحدث. ولكن هذا نادرا ما تريد. لذلك VB يوفر وسيلة لتشغيل رمز .NET العادي الذي كان سيتم تنفيذه لحدث ما. هذا هو البيان الذي يفعل ذلك. يمرر المعلمة نفسها - pEvent - إلى رمز الحدث الذي كان سيتم تنفيذه إذا لم يتم تجاوزه ، MyBase. OnPaint.

باستخدام التحكم الجديد

نظرًا لأن عنصر التحكم الجديد الخاص بنا غير موجود في صندوق الأدوات لدينا ، فيجب إنشاؤه في النموذج مع رمز. أفضل مكان للقيام بذلك هو في النموذج حمل إجراء الحدث.

افتح نافذة التعليمات البرمجية لإجراء حدث تحميل النموذج وأضف هذا الرمز:

sub frmCustCtrlEx_Load (مرسل ByVal كنظام. كائن ، ByVal ه كنظام. EventArgs) يعالج MyBase. قم بتحميل customCheckBox Dim كالجديد newCheckBox () باستخدام customCheckBox .Text = "Custom CheckBox" .Left = oldCheckBox. اليسار. أعلى = oldCheckBox. أعلى + oldCheckBox. الارتفاع. الحجم = حجم جديد (oldCheckBox. بحجم. العرض + 50 ، oldCheckBox. بحجم. ارتفاع) مع نهاية الضوابط. إضافة (customCheckBox) End Sub

لوضع مربع الاختيار الجديد في النموذج ، استفدنا من حقيقة أن هناك خانة واحدة بالفعل واستخدمنا فقط حجم وموضع ذلك الخيار (تم ضبطه بحيث تناسب خاصية Text). خلاف ذلك سيكون لدينا لرمز الموقف يدويا. عند إضافة MyCheckBox إلى النموذج ، فإننا نضيفه إلى مجموعة عناصر التحكم.

لكن هذا الرمز ليس مرنًا جدًا. على سبيل المثال ، يكون اللون الأحمر مضغوطًا وتغيير اللون يتطلب تغيير البرنامج. قد تحتاج أيضًا إلى رسم بدلاً من علامة اختيار.

إليك فئة CheckBox جديدة ومحسّنة. يوضح لك هذا الرمز كيفية اتخاذ بعض الخطوات التالية نحو البرمجة الموجهة للكائنات VB.NET.

الطبقة العامة betterCheckBox ترث CheckBox Private CenterSquareColor As Color = Color. Blue Private CenterSquareImage كـ Bitmap Private CenterSquare كـ New Rectangle (3، 4، 10، 12) Overrides Sub OnPaint _ (ByVal pEvent As _ System. شبابيك. نماذج. PaintEventArgs) MyBase. OnPaint (pEvent) إذا أنا. تم التحقق من ذلك إذا كان "CenterSquareImage ليس شيئًا" الرسومات. FillRectangle (New SolidBrush (CenterSquareColor)، CenterSquare) Else pEvent. الرسومات. DrawImage (CenterSquareImage، CenterSquare) End If End If End Sub Public Public FillColor () As Color Get FillColor = CenterSquareColor End Get Set (ByVal Value As Color) CenterSquareColor = قيمة نهاية مجموعة خاصية نهاية الملكية العامة FillImage () باسم Get Bitmap Get FillImage = CenterSquareImage End Get Set (قيمة ByVal باسم صورة نقطية) CenterSquareImage = قيمة End End End EndEnd صف دراسي

لماذا إصدار BetterCheckBox أفضل

أحد التحسينات الرئيسية هو إضافة اثنين الخصائص. هذا شيء لم تفعله الطبقة القديمة على الإطلاق.

اثنين من الخصائص الجديدة المقدمة هي

FillColor

و

ملء الصورة

للتعرف على كيفية عمل ذلك في VB.NET ، جرب هذه التجربة البسيطة. أضف فصلًا إلى مشروع قياسي ، ثم أدخل الرمز:

الممتلكات العامة كل ما تحصل عليه

عندما تضغط على Enter بعد كتابة "Get" ، يملأ VB.NET Intellisense كتلة رمز الملكية بأكملها وكل ما عليك فعله هو رمز تفاصيل مشروعك. (كتل Get و Set غير مطلوبة دائمًا بدءًا من VB.NET 2010 ، لذلك عليك أن تخبر Intellisense على الأقل بذلك كثيرًا لبدء تشغيله.)

الملكية العامة أيا كان الحصول على النهاية الحصول على مجموعة (قيمة ByVal)

تم الانتهاء من هذه الكتل في الكود أعلاه. الغرض من كتل التعليمات البرمجية هذه هو السماح بالوصول إلى قيم الخصائص من أجزاء أخرى من النظام.

مع إضافة الطرق ، ستكون على الطريق الصحيح لإنشاء مكون كامل. لمشاهدة مثال بسيط جدًا لأحد الأساليب ، أضف هذا الرمز أدناه تعريفات الخصائص في فئة betterCheckBox:

التأكيد على العامة () عني. الخط = نظام جديد. رسم. الخط (_ "Microsoft Sans Serif" ، 12.0! ، _ النظام. رسم. نوع الخط. جريئة) أنا. الحجم = نظام جديد. رسم. الحجم (200 ، 35) إزاحة (CenterSquare). اليسار - 3 ، CenterSquare. أعلى + 3) نهاية الفرعية

بالإضافة إلى ضبط الخط المعروض في CheckBox ، تقوم هذه الطريقة أيضًا بضبط حجم المربع وموقع المستطيل الذي تم التحقق منه لحساب الحجم الجديد. لاستخدام الطريقة الجديدة ، قم فقط بتدوينها بنفس الطريقة التي تتبع بها أي طريقة:

MyBetterEmphasizedBox. التأكيد على()

تمامًا مثل الخصائص ، يضيف Visual Studio تلقائيًا الطريقة الجديدة إلى Intellisense من Microsoft!

الهدف الرئيسي هنا هو إظهار كيفية ترميز طريقة ما. قد تكون على دراية بأن عنصر التحكم CheckBox القياسي يسمح أيضًا بتغيير الخط ، لذلك لا تضيف هذه الطريقة كثيرًا من الوظائف.

توضح المقالة التالية في هذه السلسلة ، "برمجة عنصر تحكم مخصص لـ VB.NET - ما وراء الأساسيات" ، طريقة تقوم بذلك ، كما توضح أيضًا كيفية تجاوز طريقة في عنصر تحكم مخصص.

instagram story viewer