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

كيف يتم اخفاء Label و TextBox عند عدم وجود بيانات ؟!

بدأه HOTFIX في 23 أغسطس 2011 · 8 رد · 1,430 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته...

ممكن الطريقة باكواد Vb.net لاخفاء (الليبل) و التكست بوكس المرتبط بقاعدة بيانات في حالة ان ليس فيها اي قيم Null او Empty

post-170923-028241300 1314118147_thumb.j

رمضان كريم...

المرفقات
Hide.jpg
#2

السلام عليكم

عليك بفحص قيمة مربع النص و إخفائه(أو إظهاره ثانية) في الحدث: bindingSource1_PositionChanged

إذا كنت تريد فحص حقل واحد أو عدد محدود من الحقول فتقوم بفحصها كل على حدة، أما في حال كان عدد الحقول كبير فيمكنك استخدامالكود التالي:

' 1

For Each ctrl As Control In Me.Controls

' 2

If ctrl.[GetType]() = GetType(TextBox) Then

' 3

If CType(ctrl, TextBox).Text = "" Then

ctrl.Visible = False

' 4

CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = False

Else

ctrl.Visible = True

CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = True

End If

End If

Next

1: حلقة تدور على كل العناصر على الفورم

2: فحص نوع العنصر (على فرض أننا نريد أن نفحص عناصر مربع النص فقط)

3: فحص قيمة text للعنصر

4: هنا نفترض أن قيمة ال tag لكل من مربعات النص تحوي اسم عنصر الـ label المجاور له ثم نستخرج الهنصر الذي يملك هذا الاسم

لاتـُهيئ كفني ما متّ بعد = لم يزل في أضلعي برقٌ و رعدُ


أنــا اسـلامــي ..أنا عزّته = أنا خيل الله نحو النصــر تعــدو


أنــا تــاريـخـي …ألا تعــرفـه = خـالد ينبض في روحــي و سعدُ


لاتـــغرنـك منــي هدأتـــــي = لا يمــوت الثــأر و لــكن يســتعـدُ


لا يغرنـــك نصــلٌ موغـــلٌ = في عروقي …فـأنا منه أحـّـــدُ


إن ما ضُيع في ساح الوغى = في سوى ساحــاتـها لا يــستردُ


#3
byte101 كتب:

السلام عليكم

عليك بفحص قيمة مربع النص و إخفائه(أو إظهاره ثانية) في الحدث: bindingSource1_PositionChanged

إذا كنت تريد فحص حقل واحد أو عدد محدود من الحقول فتقوم بفحصها كل على حدة، أما في حال كان عدد الحقول كبير فيمكنك استخدامالكود التالي:

' 1

For Each ctrl As Control In Me.Controls

' 2

If ctrl.[GetType]() = GetType(TextBox) Then

' 3

If CType(ctrl, TextBox).Text = "" Then

ctrl.Visible = False

' 4

CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = False

Else

ctrl.Visible = True

CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = True

End If

End If

Next

1: حلقة تدور على كل العناصر على الفورم

2: فحص نوع العنصر (على فرض أننا نريد أن نفحص عناصر مربع النص فقط)

3: فحص قيمة text للعنصر

4: هنا نفترض أن قيمة ال tag لكل من مربعات النص تحوي اسم عنصر الـ label المجاور له ثم نستخرج الهنصر الذي يملك هذا الاسم

اشكرك اخي الكريم على الرد...

ماذا تقصد بقيمة ال tag؟

هل اضع مثلا كلمة Label في ال Tag الخاصة بكنترول الليبل ،وكلمة Text في الكنترول الخاصة بالتكست بوكس

على العموم حاولت تطبيق الكود الذي ذكرته

 

Private Sub TradeBindingSource_PositionChanged(sender As System.Object, e As System.EventArgs) Handles TradeBindingSource.PositionChanged


    	For Each ctrl As Control In Me.Controls

        	If ctrl.[GetType]() = GetType(TextBox) Then

            	If CType(ctrl, TextBox).Text = "" Then

                	ctrl.Visible = False

                	CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = False

            	Else

                	ctrl.Visible = True

                	CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = True

            	End If

        	End If

    	Next

	End Sub

لكن للاسف يظهر خطأ عند محاولة التنفيذ... :sad:

"Object reference not set to an instance of an object"

#4

السلام عليكم

غالبا الخطأ الذي يظهر سببه سؤالك عن ال tag.

الفكرة من الtag هي التالي:

- أريد فحص قيم ال textbox و بناءا عليها سأحدد إذا كنت سأظهرها أم أخفيها، تمام ما في مشاكلز

- سواء قررت أن أخفي الtextbox أو أظهرها علي أن أقوم بفعل نفس الشيء مع الlabel المجاورة لها.

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

- يمكن فعل ذلك بأكثر من طريقة، اخترت منها أن يتم تخزين اسم عنصر الـ label في خاصية ال tag لهنصر textbox المجاور لها

- ما أريد فعلع هو أنه أثناء دوران الحلقة على عناصر textbox نستطيع معرفة اسم عنصر ال label المجاور تلقائيا لأنه مخزن في خاصية الـ tag لمربع النص هذا

- و لا داعي لتخزين أي قيمة في tag الخاص بعناصر ال label

أرجو أن تكون وضحت الفكرة

لاتـُهيئ كفني ما متّ بعد = لم يزل في أضلعي برقٌ و رعدُ


أنــا اسـلامــي ..أنا عزّته = أنا خيل الله نحو النصــر تعــدو


أنــا تــاريـخـي …ألا تعــرفـه = خـالد ينبض في روحــي و سعدُ


لاتـــغرنـك منــي هدأتـــــي = لا يمــوت الثــأر و لــكن يســتعـدُ


لا يغرنـــك نصــلٌ موغـــلٌ = في عروقي …فـأنا منه أحـّـــدُ


إن ما ضُيع في ساح الوغى = في سوى ساحــاتـها لا يــستردُ


#5
byte101 كتب:

السلام عليكم

غالبا الخطأ الذي يظهر سببه سؤالك عن ال tag.

الفكرة من الtag هي التالي:

- أريد فحص قيم ال textbox و بناءا عليها سأحدد إذا كنت سأظهرها أم أخفيها، تمام ما في مشاكلز

- سواء قررت أن أخفي الtextbox أو أظهرها علي أن أقوم بفعل نفس الشيء مع الlabel المجاورة لها.

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

- يمكن فعل ذلك بأكثر من طريقة، اخترت منها أن يتم تخزين اسم عنصر الـ label في خاصية ال tag لهنصر textbox المجاور لها

- ما أريد فعلع هو أنه أثناء دوران الحلقة على عناصر textbox نستطيع معرفة اسم عنصر ال label المجاور تلقائيا لأنه مخزن في خاصية الـ tag لمربع النص هذا

- و لا داعي لتخزين أي قيمة في tag الخاص بعناصر ال label

أرجو أن تكون وضحت الفكرة

اشكرك اخي الكريم على التواصل...

الفكرة شبه واضحة بالنسبة لي فيما يختص الـTag :huh:

لكن التطبيق لا يأتي بالنتيجة المرجوه ... :sad:

بارك الله فيك و وفقك...

#6

السلام عليكم

الكود بعد التعديل

For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is TextBox Then
If CType(ctrl, TextBox).Text = "" Then
ctrl.Visible = False
CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = False
Else
ctrl.Visible = True
CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = True
End If
End If
Next

والمثال مرفق هنا

تم تعديل هذه المشاركة بواسطة Mady-AGC في 24 أغسطس 2011 في 14:27

منحة للخريجين وطلاب الجامعات و المعاهد

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

سبحان الله وبحمده سبحان الله العظيم

#7
Mady-AGC كتب:

السلام عليكم

الكود بعد التعديل

For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is TextBox Then
If CType(ctrl, TextBox).Text = "" Then
ctrl.Visible = False
CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = False
Else
ctrl.Visible = True
CType(Me.Controls.Find(ctrl.Tag.ToString(), True)(0), Label).Visible = True
End If
End If
Next

والمثال مرفق هنا

اشكرك اخي الكريم على المشاركة في الموضوع...

نفس المشكلة تظهر عند محاولة التنفيذ...

post-170923-048295700 1314186913_thumb.j

المثال يعمل بصورة جيدة لكنه غير مرتبط بقاعدة بيانات والمشروع الذي اعمل به مرتبط بقاعدة بيانات...

و هنا رابط المشروع الذي اعمل عليه فارجو التكرم بالقاء النظره عليه...

زمضان كريم...

المرفقات
error.jpg
#8

السلام عليكم

المشروع يبدو أنه ب VB.Net 2010 ولا يعمل عندي

تأكد من أن أسم كل Label موجود بخاصية الـ Tag الخاصة بالـ TextBox الخاص به

1

منحة للخريجين وطلاب الجامعات و المعاهد

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

سبحان الله وبحمده سبحان الله العظيم

#9

بعد عدة محاولات تم التعرف على سبب ظهور رسالة الخطأ وهي انه علي تحديد جميع الTags الخاصة بكنترول الTextboxs وليس بعضها الموجودة في الفورم...

اشكر الاخوة byte101 و Mady-AGC على المشاركة في الموضوع وتقديم الافكار والمقترحات...

رمضان كريم...

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