16-01-16, 05:34 AM
(آخر تعديل لهذه المشاركة : 16-01-16, 05:38 AM {2} بواسطة silverlight.)
لسلام عليكم ورحمة الله وبركاته
مقدمة:
في هذا الموضوع سنوضح كيفية الاستفادة من
Func and Action Delegates
في استرجاع قيمة من صفات الكونترول
الهدف:
الهدف من هذا الموضوع هو مشاركة بعض الافكار البرمجية
المثال
كيف نسترجع بعضا من صفات الكونترول
Control BackColor
الدالة التالية توضح كيفية الحصول علي لون خلفية الكونترول
بشكل عام الاسلوب المستخدم في هذا المثال يمكن استخدامه لإسترجاع قيمة اي صفة من صفات الكونترول
الكود التالي يوضح كيفية استرجاع بعض القيم الخاصة بالكونترول و بنفس الاسلوب المستخدم في المثال
طبعا ليس من المنطقي اننا و عندما نريد ان نحصل علي صفة نضطر لكتابة دالة خاصة بهذه الصفة لذلك و من الأفضل لنا أن نكتب شئ عام نستطيع استخدامه مع اي كونترول
الكود التالي يوضح شكل الدالة التي يمكن استخدامها و تطويرها للحصول علي كل صفات الكونترول
الكود التالي يوضح بعض الاساليب لكيفية استخدام الدالة أعلاه
مقدمة:
في هذا الموضوع سنوضح كيفية الاستفادة من
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 Control, propertyName As ControlProperties) As T
Dim result As T = CType(Nothing, T)
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)(Me, ControlProperties.BackColor)
Dim ptr As IntPtr = GetControlProperty(Of IntPtr)(Me, ControlProperties.Handle)
Dim rect As Rectangle = GetControlProperty(Of Rectangle)(Me, ControlProperties.Bounds)