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

مشكله لبعت قيمه لنص معين

بدأه mostyam في 21 يوليو 2009 · 4 رد · 379 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عايز ابعت قيمه ل textbox من خلال فورمه تانيه

بيبعت هوه للي موجودين على الفورم نفسها اما اللي موجودين على tabcontrol مش بيشوفهم اصلا

فما الحل ؟

علما بان الكود هو

		Dim ctl As Control

		For Each ctl In frm.Controls
			If TypeOf (ctl) Is TextBox Then
				ctl.Text = "hhhh"

			End If
		Next ctl

ملْءُ السنابل تنحني بتواضع **** والفارغات رؤوسهن شوامخ

أقوى برنامج محاسبي لعام 2012

www.itdoodle.com

#2

يجب وضع for each لكل control من نوع container لأن tabcontrol يحتوي هو الإخر على مربعات أخرى. أحسن طريقة هي دالة recursive كهذه :

	Private Sub FillTextBoxes(ByVal ctl As Control)
		Dim c As Control
		For Each c In ctl.Controls
			If TypeOf (c) Is TextBox Then DirectCast(c, TextBox).Text = "value"
			If c.Controls.Count > 0 Then
				FillTextBoxes(c)
			End If
		Next
	End Sub

إبدأ بالمناداة على هذه الدالة بتمرير Me أو Form كي يتم مسحه و القيام بالازم : FillTextBoxes(Me)

#3

بعد إذنك يا أستاذ محمد رضا ممكن تشرح الكود بتاعك عشان أنا أول مرة أشوفه وعايز أتعمل بعد إذنك يعنى

وأسف على تعب حضرتك

عندما تضيق بك الدنيا فلا تقل يارب عندى هم كبير ولكن قل يا هم عندى رب كبيييير

اللهم إنى أتيت بابك مستغفراً فإن غفرت لى وأدخلتنى فأنت أهلٌ لذلك

وإن لم تغفر لى وطردتنى فأنا أهلٌ لذلك

#4

اخي العزيز مرسي جدا على الرد

ولكني مش فهمت الكود فاتمنى توضيحك له

ملْءُ السنابل تنحني بتواضع **** والفارغات رؤوسهن شوامخ

أقوى برنامج محاسبي لعام 2012

www.itdoodle.com

#5

لنبدأ بالقول أن لكل عنصر ينحدر من Control له Collection التي تحتوي على كل المربعات التي بداخله. فعندما تبدأ بزيادة المربعات على Form تتم زيادته في Collection Form.Controls ولكن المشكل في الكود الذي بعته mostyam أنه لا يأخد بعين الإعتبار أن لكل مربع من نوع Container كـ TabControl, GroupBox و Panel مجموعته Collection الخاصة التي يجب مسحها scan للبحث عن مربعات أخرى من نوع TextBox و هذا ما تقوم به الدالة FillTextBoxes عندما تنادي على نفسها وتمرر المربع الذي يحتوي على مربعات أخرى للبدإ في مسح scan آخر.

	Private Sub FillTextBoxes(ByVal ctl As Control)
		Dim c As Control
// loop للبحث في مجموعة المربعات التي بداخل ctl
		For Each c In ctl.Controls
// إذا كان العنصر c مربع من نوع TextBox نغير محتوى الخاصية Text
			If TypeOf (c) Is TextBox Then DirectCast(c, TextBox).Text = "value"
// إذا كان العنصر c مربع من نوع Container يحتوي على مربعات بداخله
			If c.Controls.Count > 0 Then
// ننادي على نفس الدالة لمسح scan المربعات التي بداخلها
				FillTextBoxes(c)
			End If
		Next
	End Sub

تحرير :

لاستعمال الكود, الرجاء زيادة الدالة في آخر كلاس Form و المناداة عليها عند الحاجة.

تم تعديل هذه المشاركة بواسطة محمد رضى في 22 يوليو 2009 في 12:05

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