تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إنشاء مكتبة تضيف وظائف جديدة للتحكمات الموجودة
#1
كاتب الموضوع : samerselo

- أنشئ مشروعا جديدا من النوع Windows Forms Application كي نقوم بالعمل عليه
- من قائمة File ومن القائمة الفرعية ADD أضف مشروعا جديدا للمشروع الحالي من النوع Class Library وقم بتسميته TestExtendingLib
في ملف الكود الخاص بالمكتبة أضف في بدايته المراجع التالية الضرورية لعمل مثالنا هنا بعد التأكد من أنك قد أضفت المراجع المناسبة لها من صفحة References من خصائص My Project

كود :
Imports System.Runtime.CompilerServices
Imports System.Math
Imports System.Drawing
Imports System.Windows.Forms
- استبدل التعريف

كود :
Public Class Class1

End Class
بالتعريف

كود :
Public Module TestExtending

End Module
- انتهت عملية التهيئة الآن وأصبحنا جاهزين لإضافة توسعاتنا

- سأبدا بإضافة الوظيفة Alert لصندوق النصوص التي ستحول لون الخلفية له إلى الأحمر والكتابة إلى الأصفر عند استدعائها - داخل تعريف الـ Module السابق أدخل الكود التالي

كود :
<Extension()> _
Sub Alert(ByVal TxtBx As TextBox)
TxtBx.Font = New Font(TxtBx.Font, FontStyle.Bold)
TxtBx.ForeColor = Color.Yellow
TxtBx.BackColor = Color.Red
End Sub
- وسنضيف وظيفة أخرى لتوسيع النوع String بحيث تحول القيمة الموجودة في السلسلة النصية إلى Double ثم تضربها بالعدد الممرر وتعيد الناتج

كود :
<Extension()> _
Function Multiply(ByVal InString As String, _
ByVal Multply As Double) As Double

Return CDbl(InString) * Multply
End Function
- قم بعمل Build للمكتبة TestExtending
- من أجل التجربة انقر بزر الفأرة اليميني على تطبيق ويندوز الذي أنشأناه في البداية ثم اضغط Add Reference وأضف مرجعا للمكتبة التي أنشأناه للتو ثم أضف الاستيراد التالي في بداية كود النموذج

كود :
Imports TestExtendingLib.TestExtending
- أضف TextBox و Button و ListBox للنموذج ثم انقر نقرا مزدوجا على الزر لإنشاء حدث النقر عليه ثم أدخل الكود التالي لاختبار الوظيفتين اللتان أضفناهما سابقا

كود :
Me.TextBox1.Text = "123.456"
Me.TextBox1.Alert()
Dim s As String = Me.TextBox1.Text
MsgBox(s.Multiply(13))
شغل البرنامج واضغط على الزر وانظر النتيجة
}}}}
تم الشكر بواسطة:
#2
- كما ترى أضفنا لصندوق النصوص وظيفة جديدة لم تكن موجودة سابقا تسمى Alert يمكننا الاستفادة منها وتطبيقها على أي صندوق نصوص في أي مشروع نريده فقط بإضافة المكتبة والاستيراد المناسب كما رأينا سابقا كما أضفنا أيضا الوظيفة Multiply لنوع البيانات String ويمكن استخدامه أيضا في أي مشروع بنفس الطريقة

- يمكننا أيضا إضافة وظيفة لـ ListBox لتفريغها وملئها ببعض البيانات مثلا بنفس الطريقة حيث يمكنك إضافة الكود التالي للمكتبة ثم عمل ReBuild لها وتجربة كيف أن صندوق القائمة أصبح يمتلك الوظيفة الجديدة

كود :
<Extension()> _
Sub ClearAndFillComputerCorp(ByVal LstBx As ListBox)
LstBx.Items.Clear()

LstBx.Items.Add("Micrsoft")
LstBx.Items.Add("Sun")
LstBx.Items.Add("Intel")
LstBx.Items.Add("IBM")
LstBx.Items.Add("Borland")
LstBx.Items.Add("CyberLink")
LstBx.Items.Add("Nvidia")
LstBx.Items.Add("Gigabyte")
LstBx.Items.Add("MSI")
End Sub
- كما يمكننا أيضا إضافة وظيفة للتحكم Button تغير من مظهره بنفس الطريقة

كود :
<Extension()> _
Sub YellowOnDarkBlue(ByVal Btn As Button)
Btn.Font = New Font(Btn.Font, FontStyle.Bold)
Btn.ForeColor = Color.Yellow
Btn.BackColor = Color.DarkBlue
End Sub
- الآن أي وظائف متكررة تستخدمها يمكنك إضافتها للتحكمات أو الفئات الموجودة وأصبحت وكأنه وظائف أساسية وذلك بإنشاء المكتبة الخاصة بك واستيرادها للمشروع
}}}}
تم الشكر بواسطة:
#3
المثال العملي على الموضوع في المرفقات


الملفات المرفقة
.zip   textextending.zip (الحجم : 54.82 ك ب / التحميلات : 28)
}}}}
تم الشكر بواسطة:
#4
تعديل بسيط أخير - غير موجود في المثال في رابط التحميل

- في ملف الكود الخاص بالمكتبة TestExtendingLib فقط قم باستبدال السطر التالي في بداية الملف

كود :
Public Module TestExtending
بالسطر

كود :
<Global.Microsoft.VisualBasic.HideModuleName()> _
Public Module TestExtending
وبذلك عند استخدام المكتبة يمكنك أن تستبدل سطر الاستيراد التالي

كود :
Imports TestExtendingLib.TestExtending
بسطر الاستيراد التالي

كود :
Imports TestExtendingLib
وشرح التعديل هو بما أن كودنا في المكتبة ضمن Module ويمكننا استخدام الدالات الموجودة في الـ Module باسمها فقط لذا أضفنا الواصفة HideModuleName التي تسبب إخفاء اسم الـ Module وبالتالي اختصار الاستيراد عند استدعاء المكتبة


طبعا بعد التعديل لاتنس عمل Rebuild للمكتبة حتى تسري التعديلات الجديدة
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Question [مثال] كيف تضيف اكثر من لغة الى برنامجك HASAN6.0 3 424 26-11-15, 11:20 PM
آخر رد: hamada558
  [كود] كيف نتأكد من أن البكسل الموجودة في الصورة تدعم الشفافية silverlight 1 566 02-06-15, 03:43 PM
آخر رد: abulayth
  إيجاد جميع الكونترول الموجودة في الفورم Recursively Find All Controls in Form silverlight 0 501 26-05-15, 12:31 AM
آخر رد: silverlight
  الصورة العربية - لآ مشقة بعد الآن في إنشاء الدروس ! RaggiTech 2 776 25-04-13, 12:22 PM
آخر رد: خليل اسماعيل
  مقال- الكومبو بوكس ComboBox كيف تضيف أيقونات RaggiTech 0 766 05-10-12, 06:54 PM
آخر رد: RaggiTech
  مثال على عملية إنشاء Windows Service – إنشاء برنامج تشفير تلقائي للملفات RaggiTech 1 579 05-10-12, 01:42 AM
آخر رد: RaggiTech
  مكتبة التوافقية الخاصة بفيجول بايزيك 6.0 RaggiTech 0 432 05-10-12, 01:34 AM
آخر رد: RaggiTech
  تلميحة--اجعل تصفح مكتبة msdn على الويب أسرع-- RaggiTech 0 368 03-10-12, 11:24 AM
آخر رد: RaggiTech
  تعلم إنشاء قائمة ListItem خاصة بك -- ماهي - و ماخصائصها - و مافوائدها - RaggiTech 0 409 03-10-12, 09:32 AM
آخر رد: RaggiTech
  تحويل الاوامر الصوتية الي نصوص باستخدام مكتبة SpeechLib RaggiTech 0 862 03-10-12, 07:57 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم