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

مشكلة في جملة For Each ؟؟؟

مغلق
بدأه ابوخالد العيدروس في 28 أكتوبر 2005 · 6 رد · 616 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا الكود :

Dim Ctrl As Control
        For Each Ctrl In Me.Controls

            If TypeOf (Ctrl) Is System.Windows.Forms.TextBox = True Then
                If Ctrl.Text = "" Then
                   MessageBox.Show("من فضلك تأكد من تعبئة جميع الحقول المطلوبة", APPLICATIONNAME, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading)

                End If

            End If
        Next
        Exit Sub


            'Attempt to update the dataset.
            Me.UpdateDataSet()

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

لكن المشكلة ان البرنامج يتجاوز هذا البلوك وينفذ الامر التالي له رغم وجود تيسكت بوكس خالية من القيم ..

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

وشكرا لكم

#2

اخي جرب ان تضع التالي في الشرط:

If Trim(Ctrl.Text) = "" Then
---
---
---
Exit Sub
End IF
#3
اقتباس
لكن المشكلة ان البرنامج يتجاوز هذا البلوك وينفذ الامر التالي له رغم وجود تيسكت بوكس خالية من القيم ..

لأن سطر الـ Exit Sub لا يتم تنفيذه أبداً..

ضع الـ Exit Sub بداخل الـ Loop بعد الـ MessageBox مباشرةً و سيعمل بالطريقة الصحيحة بإذن الله..

رأس الحكمة الإيمان بالله

#4

هذه الحلقة تعمل بشكل صحيح في حالة أن الأدوات (Textbox) موضوعة بشكل مباشر على الفورم أي ليس من ضمن Panel أو Tab مثلا

ولكني الحقيقة جملة If شكيت بكونها صحيحة

بإمكانك استخدام TypeName على هذا الشكل

If TypeName(ctrl) = "TextBox" then

سوف أتأكد من الكود وأرد عليك من جديد

#5

أعتقد ان جواب سؤالك في الكود التالي:

        For Each Ctrl As Control In Me.Controls
            If TypeOf Ctrl Is TextBox Then
                If Trim(Ctrl.Text).Length = 0 Then
                    MsgBox("ادخل نص في: " & (Ctrl.Name))
                End If
            End If
        Next

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

بالفعل جربت جميع الحلول ولكن للأسف لم تعمل ..

ولكن بناء على ملاحظة الاخ أيموشة توصلت للحل ولله الحمد وهذا هو الكود الصحيح ..

For Each Ctrl In Me.GroupBox1.Controls

            If TypeOf (Ctrl) Is TextBox Then
                If Ctrl.Text.Trim = "" Then
                    MessageBox.Show("من فضلك تأكد من تعبئة جميع الحقول المطلوبة", APPLICATIONNAME, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading)
                    Exit Sub
                End If
            End If
        Next

وشكرا على تجاوبكم ومساعدتكم

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

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