السلام عليكم
اخواني الاعزاء اريد عند النقر على ال treeview
يتم تحميل الاداة الاولى
وعند التبديل يتم الغاء تحميلها وتتحمل الاداة الاخرى
واذا كان هناك طرقة اخرى ارجو تزويدي بها
ولكم جزيل الشكر
السلام عليكم
اخواني الاعزاء اريد عند النقر على ال treeview
يتم تحميل الاداة الاولى
وعند التبديل يتم الغاء تحميلها وتتحمل الاداة الاخرى
واذا كان هناك طرقة اخرى ارجو تزويدي بها
ولكم جزيل الشكر
السلام عليكم
استخدم SelectedNode بدلاً من Nodes(0).index
Select Case TreeView1.SelectedNode.Index Case 0 UserControl21.Hide() UserControl11.Show() UserControl11.Dock = DockStyle.Fill Case 1 UserControl11.Hide() UserControl21.Show() UserControl21.Dock = DockStyle.Fill End Select
في المثال يتضح المقال
اشكرك مشرفنا الغالي الغملاسي
وكل عام وانت بخير وكل اعضاء هذا الصرح العزيز على قلوبنا و كل الامة الاسلامية في خير وفي عز وتمكين
===============================================
جربت الحل اللذي وضعت وظهرت لي الرسالة الموجودة في المرفقات
ولي ملاحظة:
طبعا المطلوب في الغاء تحميل اي من الاداتين ان يتم ازالتها من الذاكرة تماما جربت الامر UNLOAD ولكن لم ينجح
فهل الكود الذي ارفقته يقوم بالمطلوب ام يخفيه فقط ولك جزيل الشكر
الجواب اختبر الخاصية التالية SelectedNode قبل اخذ القيمة من خواصها أو سلوكياتها.اقتباسجربت الحل اللذي وضعت وظهرت لي الرسالة الموجودة في المرفقات
If Me.TreeView1.SelectedNode IsNot Nothing Then
لا يا أخي لا يزيل العنصر من الذاكرة و إنما يخفيها فقطاقتباسفهل الكود الذي ارفقته يقوم بالمطلوب ام يخفيه فقط ولك جزيل الشكر
لإزالة العنصر من الذاكرة لابد أن نستخدم dispose و nothing لتعجيل الحذف و الازالة من الذاكرة .
على سبيل المثال.
If Me.TreeView1.SelectedNode IsNot Nothing Then Select Case TreeView1.SelectedNode.Index Case 0 If UserControl11 Is Nothing Then 'Create new instance. UserControl11 = New UserControl1 Me.Panel1.Controls.Add(UserControl11) End If UserControl11.Show() UserControl11.Dock = DockStyle.Fill If UserControl21 IsNot Nothing Then UserControl21.Dispose() UserControl21 = Nothing End If Case 1 If UserControl21 Is Nothing Then 'Create new instance. UserControl21 = New UserControl2 Me.Panel1.Controls.Add(UserControl21) End If UserControl21.Show() UserControl21.Dock = DockStyle.Fill If UserControl11 IsNot Nothing Then 'Me.Controls.Remove(UserControl11) UserControl11.Dispose() UserControl11 = Nothing End If End Select End If
بالتوفيق إن شاء الله.
في المثال يتضح المقال
:) :)
رائع رائع رااااااااااااااااااااااااااااااااااااااااااااااااااااااائع .... اخي الغملاسي
اشكرك من اعماق قلبي
وفيت وكفيت اصبت الهدف ووصلت الى المطلوب وأكثر والله تستحق وسام التميز .... وأسال الله لك التوفيق في الدنيا والاخرة
-waf
اخواني الافاضل
لو كان عندي اكثر من 20 اداة يوزر كنترول ولا اعرف ايها تم تحميله بحيث اريد عند النقر على عند النقر على ال treeview يتم الغاء الاداة المحملة النشطة ويتم تحميل الاداة الجديدة التي تم اختيارة بدلا منها
ولكم جزيل الشكر
عندما تريد إضافة أداة ما للفورم.. تستطيع ذلك من خلال اضافة الأداة الى المجموعة Controls.. التابعة للفورم..والتي تحتوي على جميع الأدوات التي قد تم إضافتها للفورم.. كما فعل الأخ الغملاسي في المشاركة #4
Me.Panel1.Controls.Add(UserControl11)
ومن خلال نفس الخاصية.. نستطيع معرفة كل اسماء الأدوات.. فلنفرض أن كل أداة من العشرين اداة.. اسمها يبدأ بـ "Button".. سنقوم أولا بالبحث عن جميع الأدوات الموجودة.. ثم نتحقق من بداية الاسم.. ان كان يبدأ بـ "Button".. فسيتم اخفاءه.. أكرر اخفاءه.. بعد ذلك نظهر الأداة التي قد تم اختيار اسمها من الـ "ListBox"
Sub MyDispose(ByVal ControlName As String) Dim Exists As Boolean = False Do Exists = False For Each i As Control In Me.Controls If i.Name.Substring(0, 6) = "Button" And i.Visible = True Then Exists = True i.Hide() End If Next Loop Until Exists = False Me.Controls.Item(ControlName).Show() End Sub
تستطيع استخدام هذه الطريقة بأي وقت.. ما عليك الا انك تحدد اسم الأاة.. التي تريدها هي وحدها أن تظهر:
MyDispose(ListBox1.SelectedItem)
شاهد المثال.. وبالتوفيق ان شاء الله
اشكرك اخي M0oATH على ردك
ساجرب وان شاء الله يمشي الحال
العفو أخوي... ان شاء الله تضبط الطريقة معاك.. جرب وخبرنا
حاولت اجمع بين فكرة وحل الاخوين M0oATH و الغملاسي
وطلعت بهذا المثال الذي اتمنى ان يستفاد منه لكن ينقصه تعديل بسيط وتكون النتيجة ممتازة
مع العلم اني رأيت اكثر الامثلة التي تاتي معى الادوات المساندة لغات البرمجة تستخدم نفس الفكرة ولكن لها طريقة معقدة امل ان نصل الى حل اسهل منها
المطلوب :
كيف استغني عن select case واستفيد من اسم الايتم بحيث اضعه في متغير كالتالي
بدلا من الجملة dim usercontrol_name as new Days
اريد ان تكون dim usercontrol_name as new TreeView1.SelectedNode.name
المثال يوضح المطلوب
ولكم جزيل الشكر
تم تعديل هذه المشاركة بواسطة ابوطلال في 1 فبراير 2007 في 01:00
للرفع بعد طول انتظار
للرفع بعد طول انتظار
للرفع بعد طول انتظار
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…