21-01-14, 11:19 PM
السلام عليكم ورحمة الله وبركاته
--
اليوم مقالة سريعة تفيد مطوري الكلاسات والادوات عاما ، حيث ان هذا الموضوع يسهل الكثير والكثير للوصول الى مصفوفة داخل class من خلال خاصية ..
دعونا نتعرف على الـIndexer Property
نحن نعرف ان هناك خاصية للفورم تسمى Controls وهي عبارة عن خاصية مفهرسة (Indexer Property) :-
Indexer Property يعني تقدر تستعمل الخاصية كأنها مصفوفة ، حيث في مثالنا تستطيع الوصول الى control بالاندكس :-
كيف يمكننا عمل ذلك ؟؟؟ تابع ..
اولا نضيف class بهذه الطريقة :-
فنضع المصفوفة التي سيتم فهرستها لاحقا .
الان نضع هذا الخاصية :
طبعا في الكود انا وضعت get فقط -- لكن يمكنك زيادة الخاصية ووضع set .
الان اصبحت هذه الclass تسمى Indexer class
فيمكنك بالكود التالي الوصول للمصفوفة التي بداخلها مثل طريقة Form.Controls :-
رائع اليس كذلك !!..
طيب يا محمد انت قلت في العنوان انك ستقوم ب Indexer Property وليس Indexer class !!
نعم انا قلت ذلك ، وهذا من باب الاحترافية فقط .. فكما اشرنا في بداية الموضوع ان الخاصية Form.Control هي خاصية مفهرسة (Indexer Property) وسنقوم بالضبط بتكوين خاصية نفسها.
لذلك الان علينا اضافة متغير عادي على مستوى الفورم
هذا المتغير يقوم بإنشاء instance للكلاس الي سويناه
--
ثم نقوم بتكوين خاصية تقوم بعمل get لهذا المتغير :
الان هذه الخاصية ClassControls اصبحت Indexer Property لانها تشير الى متغير عام ، والمتغير العام يشير الى Indexer class
كما نرى في الصورة :-
الان في النهاية ، شوفو نستطيع ان نقوم بجلب control من خلال الindex اي انها اصبحت Indexer Property كخاصية Form1.Controls
في النهاية اتمنى عجبتكم هذه المقالة السريعة
والى اللقاء في مقالات اخرى ان شاء الله
Done by - Alshaki LLah
--
اليوم مقالة سريعة تفيد مطوري الكلاسات والادوات عاما ، حيث ان هذا الموضوع يسهل الكثير والكثير للوصول الى مصفوفة داخل class من خلال خاصية ..
دعونا نتعرف على الـIndexer Property
ماهي الIndexer Property
نحن نعرف ان هناك خاصية للفورم تسمى Controls وهي عبارة عن خاصية مفهرسة (Indexer Property) :-
Indexer Property يعني تقدر تستعمل الخاصية كأنها مصفوفة ، حيث في مثالنا تستطيع الوصول الى control بالاندكس :-
كيف يمكننا عمل ذلك ؟؟؟ تابع ..
صنع Indexer Property
اولا نضيف class بهذه الطريقة :-
PHP كود :
public class GetClassControls
{
Control[] controls = new Control[] { new Button(), new TextBox(), new Label() };
}
فنضع المصفوفة التي سيتم فهرستها لاحقا .
الان نضع هذا الخاصية :
PHP كود :
Control[] controls = new Control[] { new Button(), new TextBox(), new Label() };
public Control this[int index]
{
get
{
return controls[index];
}
}
طبعا في الكود انا وضعت get فقط -- لكن يمكنك زيادة الخاصية ووضع set .
الان اصبحت هذه الclass تسمى Indexer class
فيمكنك بالكود التالي الوصول للمصفوفة التي بداخلها مثل طريقة Form.Controls :-
رائع اليس كذلك !!..
طيب يا محمد انت قلت في العنوان انك ستقوم ب Indexer Property وليس Indexer class !!
نعم انا قلت ذلك ، وهذا من باب الاحترافية فقط .. فكما اشرنا في بداية الموضوع ان الخاصية Form.Control هي خاصية مفهرسة (Indexer Property) وسنقوم بالضبط بتكوين خاصية نفسها.
لذلك الان علينا اضافة متغير عادي على مستوى الفورم
PHP كود :
private GetClassControls _classContrl = new GetClassControls();
هذا المتغير يقوم بإنشاء instance للكلاس الي سويناه
--
ثم نقوم بتكوين خاصية تقوم بعمل get لهذا المتغير :
PHP كود :
public GetClassControls ClassControls { get { return _classContrl; } }
الان هذه الخاصية ClassControls اصبحت Indexer Property لانها تشير الى متغير عام ، والمتغير العام يشير الى Indexer class
كما نرى في الصورة :-
الان في النهاية ، شوفو نستطيع ان نقوم بجلب control من خلال الindex اي انها اصبحت Indexer Property كخاصية Form1.Controls
في النهاية اتمنى عجبتكم هذه المقالة السريعة
والى اللقاء في مقالات اخرى ان شاء الله
Done by - Alshaki LLah