السلام عليكم و رحمة الله و بركاته .
- الخاصية Tag معرفة في الصف Control أي أنها موجودة في كل الصفوف التي ترث من هذا الصف و هي معظم المكونات المرئية التي يمكن سحبها من صندوق الأدوات على الفورم .
- تستخدم الخاصية Tag لربط كائن ما بالــ Control و غالبا الكائن هذا يكون من طبقة Business Layer و الــ Control يكون في طبقة الــ GUI , لكن بشكل عام يمكن استخدامها للربط مع أي كائن أو Control.
- الخاصية Tag من نوع Object و هو الأب الأعلى لجميع صفوف الدوت نت و بالتالي الخاصية Tag ممكن أن تشير إلى (تخزن) أي كائن من أي نوع ..
- المثال : سنأخذ مثال هو شجرة الحسابات , حيث أن كل حساب فيها له اسم و رقم و رصيد و معلومات أخرى و نريد إظهار أسماء هذه الحسابات على TreeView و عندما يقوم المستخدم بتحديد إحدى عقد TreeNode الشجرة تظهر المعلومات التفصيلية عن الحساب .
- الــ Business Layer Object هو AccountInfo و هو صف بسيط فيه معلومات الحساب .
- الــ Control هو TreeNode.
- ربط الــ Control بالــ Business Layer Object : يكون ببساطة باسناد الــ Reference (اسم المتحول في الكود) الخاص بالكائن إلة الخاصية Tag , مثال :
TreeNode newTreeNode = new TreeNode();
newTreeNode.Tag = accountInfo - الوصول إلى الــ Business Layer Object : ببساطة تحويل الخاصية Tag إلى نوع الكائن عن طريق casting و إسنادها لمتحول (أو Reference) مثال :
AccountInfo accountInfo = treeView1.SelectedNode.Tag as AccountInfo;
- تشغيل المثال : افتح التطبيق و حدد إي عقدة في الشجرة لتظهر المعلومات التفصيلية للحساب في خانات النص ثم غير القبم و احفظ ثم حدد عقدة أخرى كي تظهر معلوماتها ثم ارجع للعقدة السابقة كي نشاهد المعلومات التي حفظناها مؤخرا ..

- شرح بسيط : كل Control يظهر أمامنا على الفورم هو في النهاية Object موجود في الذاكرة , لذلك كل TreeNode هي Object في الذاكرة و الخاصية Tag فيها تشير إلى الكائن من نوع AccountInfo الذي تمثله العقدة .
- ملاحظة : هنا مثال يوضح كيفية تحميل مجموعة من السجلات على شكل شجرة و إضافة قائمة يمينة لحذف و تعديل و إضافة العقد إضافة لاستخدام الخاصية Tag في الــ TreeViewItem . (الــ Business Object اسمه Types) رابط الموضوع , تحميل المثال مباشرة .
- المثال في المرفقات ..
ArabTeamTag.rar