تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تطوير الكونترول Designers الجزء الرابع
#2
ملحوظه هامه عن الكونترول كلاس

الكونترول يمتلك مجموعه من الصفات Properties وهي صفات أوليه كلها تبدأ باسم Default مثل خاصية DefaultSize و DefaultFont وأيضا بعض الخواص الاخري وطبعا ممكن عمل Overrides لهذه الصفات جميعا لو أردنا وذلك حسب متطلبات الكونترول الذي نقوم بتصميمه.

كيف تصنع Designer ؟

الإجابة علي هذا السؤال تنحصر في الخطوات التالية:

لتصنع Designer فأنت بحاجه الي كونترول أولا أي يجب أن تصنع الكونترول الخاص بك مهما كان نوعه أو شكله أو الهدف منه
أيضا أنت بحاجه الي إضافة Reference هام جدا إلي مشروعك وهو Namespace: System.Windows.Forms.Design
ولكي تربط بين الكونترول و Designer الذي قمت بتصميمه عليك أن تستخدم DesignerAttribute Class

من المهم جدا تحديد نوع Designer الذي سوف تقوم بعمل Inherits له وذلك مرتبط بك وماذا تريد.
مثلا لو أردت أن تصنع Custom Control ولا تريد أن يتم إضافة أي كونترول أخري إليه أي لا تريد إضافة Child Control إليه عليك أن تستخدم ControlDesigner Class أما إذا كنت تريد أن تضيف كونترول أخري الي ما تصمم عليك أن تستخدم ParentControlDesigner Class

ولتوضيح هذه النقطة لنفرض انك تريد أن تصنع Custom Control وأيضا لا تريد من المستخدم أن يقوم بإضافة عناصر أخري Child Control الي هذا الكونترول هنا عليك أن تستخدم ControlDesigner Class وطبعا العكس صحيح إذا أردت أن تضيف عناصر أخري الي الكونترول عليك هنا أن تستخدم ParentControlDesigner Class أو أي كلاس أخر مشتق منه

ببساطه أكثر أن أي كونترول تقوم ببنائه وتستخدم معه ControlDesigner Class لا يمكن استخدامه كوعاء أو حاويه Container لأي أنواع أخري من الكونترول.

الفرق بين ControlDesigner Class و ParentControlDesigner Class

لو نظرنا الي كل من هذين الكلاسين من خلال Help File الخاص بالفيجوال استوديو سنجد أن ParentControlDesigner مشتق من ControlDesigner ولو عقدنا مقارنة بينهم سنجد أيضا أن ParentControlDesigner يمتلك عدة طرق أكثر قليلا من ControlDesigner وعددها سبعة طرق وبالمثل سبعة صفات إضافية أخري وهي موضحه كالأتي

الطرق Methods

AddPaddingSnapLines
CanParent
CreateTool
CreateToolCore
GetControl
GetParentForComponent
GetUpdatedRect

الصفات Properties

AllowControlLasso
AllowGenericDragBox
AllowSetChildIndexOnDrop
DefaultControlLocation
DrawGrid
GridSize
MouseDragTool

لرؤية باق الصفات والخواص والحقول يمكنك عزيزي القاري أن تراجع ملف Help الخاص بالفيجوال استوديو كما يمكنك أيضا ن تقارن بينهم لتري الفرق بنفسك وستجد أيضا أن هناك حقل Filed كان موجودا في ControlDesigner ولكنه لم يعد موجودا في ParentControlDesigner وهذا الحقل يطلق عليه InvalidPoint

مما سبق نكتشف أن الطرق والصفات التي تم إضافتها الي ParentControlDesigner هي التي خلقت الفرق بينهم وهي التي أعطت الإمكانيات لهذا Designer لكي يعطي إمكانية إضافة أي كونترول أخر الي أي Custom Control وبما أن معظم Designers مشتقه من ParentControlDesigner لذلك سوف نتحدث عنه تحديدا ونحاول أن نغطي الأجزاء الهامة به والتي نحتاجها في تصميم كونترول جديد وبمواصفات وشكل جديد.

هيا نصمم Custom Control

لنفتح مشروع جديد Form Application ثم نضيف له كلاس نطلق عليه MyControl و نضيف له كونترول عن طريق Inherits و أيضا في نهاية هذا الكلاس نضيف كلاس ونطلق عليه MyDesigner ونضيف أيضا له ParentControlDesigner عن طريق Inherits الأن لنربط بين الكونترول و Designer لكي نربط بين الكلاسين سوف نستخدم DesignerAttribute Class ومن ثم علينا أن نضيف Attribute الي MyControl Class والهدف هنا هو أننا نقول للكونترول MyControl أن Designer المسئول عنك هو MyDesigner ويتم إضافة DesignerAttribute (<Designer(GetType(MyDesigner))> _) مباشرة قبل MyControl Class وبذلك يكون الكود كالأتي


كود :
Imports System.ComponentModel
Imports System.Windows.Forms.Design

<Designer(GetType(MyDesigner))> _
Public Class MyControl
Inherits Control

End Class 'MyControl

Public Class MyDesigner
Inherits ParentControlDesigner

End Class 'MyDesigner
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
تطوير الكونترول Designers الجزء الرابع - بواسطة Raggi Tech - 03-10-12, 09:10 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 10 8,403 19-07-22, 12:15 AM
آخر رد: StartLight4000
  حساب قيمة معادلة(اقصد صيغة دون مجاهيل) مكتوبة بالتكست : الجزء الخامس والاخير محمد شريقي 4 4,837 23-02-18, 10:44 PM
آخر رد: العواد الصغير
  مقدمة إلي إخفاء المعلومات - الجزء الأول silverlight 5 4,518 07-01-17, 10:44 PM
آخر رد: Basil Abdallah
  مقدمة إلي إخفاء المعلومات - الجزء الثاني silverlight 1 3,214 06-01-17, 11:52 AM
آخر رد: silverlight
  إيجاد جميع الكونترول الموجودة في الفورم Recursively Find All Controls in Form silverlight 0 3,276 26-05-15, 12:31 AM
آخر رد: silverlight
  تحويل الفيديو في برامجك-الجزء الثاني( إصلاح للمشاكل + تعديل للروابط + توضيح للأمر ) RaggiTech 1 3,520 10-12-14, 06:37 PM
آخر رد: abulayth
  الجزء الثاني من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج ( العمليات المتعددة)! أنس محمود 0 3,005 22-02-13, 12:39 AM
آخر رد: أنس محمود
  مقال- تطوير الكونترول Property Attributes الجزء الثالث RaggiTech 0 2,477 06-10-12, 12:20 AM
آخر رد: RaggiTech
  الجزء الثاني - تطوير الكونترول Interfaces RaggiTech 0 2,464 06-10-12, 12:19 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Skin Control RaggiTech 0 2,633 06-10-12, 12:08 AM
آخر رد: RaggiTech

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


يقوم بقرائة الموضوع: