تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Generic Delegates & ًWindows Forms Control - Part 1
#1
لسلام عليكم ورحمة الله وبركاته

مقدمة:
في هذا الموضوع سنوضح كيفية الاستفادة من
Func and Action Delegates
في استرجاع قيمة من صفات الكونترول

الهدف:
الهدف من هذا الموضوع هو مشاركة بعض الافكار البرمجية

المثال

كيف نسترجع بعضا من صفات الكونترول
Control BackColor
الدالة التالية توضح كيفية الحصول علي لون خلفية الكونترول

PHP كود :
  Friend Function GetControlBackColor(ctrl As Control) As Color
        Return CType
((ctrl.Invoke(New Func(Of Color)(Function() ctrl.BackColor))), Color)
 
   End Function 

بشكل عام الاسلوب المستخدم في هذا المثال يمكن استخدامه لإسترجاع قيمة اي صفة من صفات الكونترول

الكود التالي يوضح كيفية استرجاع بعض القيم الخاصة بالكونترول و بنفس الاسلوب المستخدم في المثال 



PHP كود :
    Friend Function GetControlHandle(ctrl As Control) As IntPtr
        Return CType
((ctrl.Invoke(New Func(Of IntPtr)(Function() ctrl.Handle))), IntPtr)
 
   End Function

 
   Friend Function GetControlBounds(ctrl As Control) As Rectangle
        Return CType
((ctrl.Invoke(New Func(Of Rectangle)(Function() ctrl.Bounds))), Rectangle)
 
   End Function 


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

الكود التالي يوضح شكل الدالة التي يمكن استخدامها و تطويرها للحصول علي كل صفات الكونترول
PHP كود :
   Friend Function GetControlProperty(Of T)(ctrl As ControlpropertyName As ControlProperties) As T
        Dim result 
As CType(NothingT)
 
       Select Case propertyName
            Case ControlProperties
.Handle
                result 
= (ctrl.Invoke(New Func(Of IntPtr)(Function() ctrl.Handle)))
 
           Case ControlProperties.Bounds
                result 
= (ctrl.Invoke(New Func(Of Rectangle)(Function() ctrl.Bounds)))
 
           Case ControlProperties.BackColor
                result 
= (ctrl.Invoke(New Func(Of Color)(Function() ctrl.BackColor)))

 
               ' continue the same wy to get other control properties
                '
 
               '
        End Select
    End Function 

PHP كود :
Friend Enum ControlProperties
    Handle
    Bounds
    ClientRectangle
    BackColor
    ForeColor
    DoubleBuffered
End Enum 

الكود التالي يوضح بعض الاساليب لكيفية استخدام الدالة أعلاه


PHP كود :
       Dim clr As Color GetControlProperty(Of Color)(MeControlProperties.BackColor)
 
       Dim ptr As IntPtr GetControlProperty(Of IntPtr)(MeControlProperties.Handle)
 
       Dim rect As Rectangle GetControlProperty(Of Rectangle)(MeControlProperties.Bounds
الرد }}}}
تم الشكر بواسطة: khodor1985 , khodor1985
#2
شرح ممتازززززززززززززز
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Control Finder Class silverlight 3 70 03-12-16, 06:11 AM
آخر رد: أبو عمر
  Generic Delegates & ًWindows Forms Control - Part 2 silverlight 0 197 19-01-16, 02:01 PM
آخر رد: silverlight
  [مقال] Generic Delegates - Func and Action silverlight 14 538 18-01-16, 12:57 AM
آخر رد: 10468
  [كود] Line Control silverlight 0 195 14-01-16, 03:03 PM
آخر رد: silverlight
  Retrieve Owner and Form of a Control silverlight 0 184 12-12-15, 05:28 AM
آخر رد: silverlight
  Capture Mouse Position within Control Coordinates silverlight 0 226 11-12-15, 10:30 PM
آخر رد: silverlight
  Collection & DataBase Part 2 silverlight 0 211 02-12-15, 08:42 PM
آخر رد: silverlight
  Collection & DataBase Part 1 silverlight 1 397 25-07-15, 07:55 AM
آخر رد: silverlight
  [مقال] Fun with Windows Forms & Graphics - Spy Form silverlight 1 514 23-06-15, 09:33 PM
آخر رد: silverlight
  [VB.NET] My ThreadSafe Generic IList Not Respect MyEnumerator silverlight 1 455 23-05-14, 04:17 PM
آخر رد: Sajad

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


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