الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف احمل اليوزر كنترول داخل الفورم وكيف الغي تحميلها

مغلق
بدأه ابوطلال في 27 ديسمبر 2006 · 12 رد · 1,271 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الاعزاء اريد عند النقر على ال treeview

يتم تحميل الاداة الاولى

وعند التبديل يتم الغاء تحميلها وتتحمل الاداة الاخرى

واذا كان هناك طرقة اخرى ارجو تزويدي بها

ولكم جزيل الشكر

show_form.rar

#2

السلام عليكم

استخدم 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

في المثال يتضح المقال

#3

اشكرك مشرفنا الغالي الغملاسي

وكل عام وانت بخير وكل اعضاء هذا الصرح العزيز على قلوبنا و كل الامة الاسلامية في خير وفي عز وتمكين

===============================================

جربت الحل اللذي وضعت وظهرت لي الرسالة الموجودة في المرفقات

ولي ملاحظة:

طبعا المطلوب في الغاء تحميل اي من الاداتين ان يتم ازالتها من الذاكرة تماما جربت الامر UNLOAD ولكن لم ينجح

فهل الكود الذي ارفقته يقوم بالمطلوب ام يخفيه فقط ولك جزيل الشكر

post-5282-1168008642_thumb.png

#4
اقتباس
جربت الحل اللذي وضعت وظهرت لي الرسالة الموجودة في المرفقات
الجواب اختبر الخاصية التالية 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

بالتوفيق إن شاء الله.

show_form.rar

في المثال يتضح المقال

#5

:) :)

رائع رائع رااااااااااااااااااااااااااااااااااااااااااااااااااااااائع .... اخي الغملاسي

اشكرك من اعماق قلبي

وفيت وكفيت اصبت الهدف ووصلت الى المطلوب وأكثر والله تستحق وسام التميز .... وأسال الله لك التوفيق في الدنيا والاخرة

-waf

#6

لا شكر على واجب عزيزي.

بالتوفيق إن شاء الله.

في المثال يتضح المقال

#7

اخواني الافاضل

لو كان عندي اكثر من 20 اداة يوزر كنترول ولا اعرف ايها تم تحميله بحيث اريد عند النقر على عند النقر على ال treeview يتم الغاء الاداة المحملة النشطة ويتم تحميل الاداة الجديدة التي تم اختيارة بدلا منها

ولكم جزيل الشكر

#8

عندما تريد إضافة أداة ما للفورم.. تستطيع ذلك من خلال اضافة الأداة الى المجموعة 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)

شاهد المثال.. وبالتوفيق ان شاء الله

WindowsApplication1.rar

M0oATH

اقتباس
وكم من طالب غلب أستاذه

#9

اشكرك اخي M0oATH على ردك

ساجرب وان شاء الله يمشي الحال

#10

العفو أخوي... ان شاء الله تضبط الطريقة معاك.. جرب وخبرنا

M0oATH

اقتباس
وكم من طالب غلب أستاذه

#11

حاولت اجمع بين فكرة وحل الاخوين M0oATH و الغملاسي

وطلعت بهذا المثال الذي اتمنى ان يستفاد منه لكن ينقصه تعديل بسيط وتكون النتيجة ممتازة

مع العلم اني رأيت اكثر الامثلة التي تاتي معى الادوات المساندة لغات البرمجة تستخدم نفس الفكرة ولكن لها طريقة معقدة امل ان نصل الى حل اسهل منها

المطلوب :

كيف استغني عن select case واستفيد من اسم الايتم بحيث اضعه في متغير كالتالي

بدلا من الجملة dim usercontrol_name as new Days

اريد ان تكون dim usercontrol_name as new TreeView1.SelectedNode.name

المثال يوضح المطلوب

ولكم جزيل الشكر

WindowsApplication1.rar

تم تعديل هذه المشاركة بواسطة ابوطلال في 1 فبراير 2007 في 01:00

#12

للرفع بعد طول انتظار

#13

للرفع بعد طول انتظار

للرفع بعد طول انتظار

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…