LineControl

في هذا الموضوع سوف نبني كونترول بسيط و الغالبية منكم يتذكرون
 LineControl
 القديم الذي كان موجودا في النسخ القديمة من الفيجوال بيسك 6 و ما قبله تقريبا علي ما اتذكر


و لقد كتبت هذا الموضوع فقط لتأكيد أننا من الممكن أن نستخدم
 Action Delegates
 في اطلاق حدث بدون استخدام اي
 EventHandler

والهدف هنا هو تأكيد الفكرة التي تم طرحها في اللينك التالي

Func and Action Delegates

و علي العموم الكونترول شكله جيد و مناسب للإستخدام

صفات الكونترول


LineColor
  هي صفة عبارة عن لون
تستطيع منها تغيير اللون المستخدم في عملية رسم الخط

LinePosition
 وهي صفة عبارة عن
 Enumeration
تستطيع منها تحديد مكان رسم الخط إما الي الأسفل او في المنتصف أو في القمة

و لمستخدمي نسخةالدوت نت 3.5 فيما فوق يجب عليهم استخدام
النسخة 1.1
 الموجودة بالمرفقات

أما مستخدمي الدوت نت الاقل من نسخة 3.5 يجب عليهم استخدام
 النسخة 1.0
 الموجودة بالمرفقات

الفارق بين النسختين يظهر في الكود التالي

حيث هنا يتم هنا اطلاق الحدث باستخدام
 Action Delegate
<Browsable(True)>
 
   <Category("Cairo")>
 
   <DefaultValue(GetType(LinePosition), "Middle")>
 
   Public Property LinePosition As LinePosition
        Get
            Return _position
        End Get
        Set
(value As LinePosition)
 
           If _position <> value Then
                Dim positionAction 
As Action(Of LinePositionChangedEventArgs) = Sub()
 
                                                                                   _position value
                                                                                    Invalidate
()
 
                                                                               End Sub
                Dim args 
As New LinePositionChangedEventArgs(_position)
 
               positionAction(args)
 
           End If
 
       End Set
    End Property

الكود هنا هو نفس الكود اعلاه ولكن يتم اطلاق حدث بالاسلوب التقليدي
 <Browsable(True)>
 
   <Category("Cairo")>
 
   <DefaultValue(GetType(LinePosition), "Middle")>
 
   Public Property LinePosition As LinePosition
        Get
            Return _position
        End Get
        Set
(value As LinePosition)
 
           If _position <> value Then
                _position 
value
                Dim args 
As New LinePositionChangedEventArgs(_position)
 
               OnPositionchanged(args)
 
           End If
 
       End Set
    End Property 



DownLoad Source

Comments

Popular posts from this blog

مقدمة الي تشفير الحروف الأبجدية العربية

VB.NET Translucent Control using GDI+

Add Custom Event to a Class in VB.NET