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

نفس الحدث لعدد من الكائنات

مغلق
بدأه mostbar في 27 يونيو 2005 · 4 رد · 459 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أملك نموذج به ما يقرب من 60 Combobox .. أنا أريد أن اضع كود معين في حدث الـ TextChanged ..

هل يمكن فعل هذا بكود مختصر بدل من هذه الطريقة :

 Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged

    End Sub
    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

    End Sub
    Private Sub CB4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB4.SelectedIndexChanged

    End Sub
    Private Sub CB1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB1.SelectedIndexChanged

    End Sub
    Private Sub CB3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB3.SelectedIndexChanged

    End Sub

و غير هذه أيضا :

Private Sub ComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged, ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged

    End Sub

و جزاكم الله خيرا

#2

UP

#3
Private Sub UniversalSelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged, DropDownList2.SelectedIndexChanged, DropDownList3.SelectedIndexChanged, DropDownList4.SelectedIndexChanged

    End Sub
#4

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

أنا أملك أكثر من 60 كائن و كتابة أسمائهم جميعا أمر جد مرهق ..

جزاكم الله خيرا على الرد ,, و بانتظار باقي الاخوة

#5

السلام عليكم

الطريقة كالتالي أننا نقوم بإنشاء Delegate في وظيفة وفيها تكرار أو ما يعرف بـ Recursion

والسبب قد تكون هنالك قوائم منسدلة ليست في النموذج نفسه و إنما في عناصر مثل GroupBox أو TabPage

إلى أخره , المهم أننا نعمل حلقة Loop للبحث عن العنصر مع أبنائه ثم نتحقق هل هؤلاء الأبناء من نوع Combo box

إذا كان كذلك سنربطهم بالـ Delegate عن طريق حدثهم وهو TextChanged

النصوص البرمجية هي

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'يجب أن ترسل النموذج وليس القائمة المنسدلة
        'والسبب أن النصوص البرمجية تبحث عن عنصر لهُ أبناء
        TextChangedToAllComboBox(Me)
    End Sub

    Private Sub TextChangedToAllComboBox(ByVal ParentControl As Control)
        Dim Nestedctl As Control
        'Recursion Technique 
        If ParentControl.HasChildren Then
            For Each Nestedctl In ParentControl.Controls
                If TypeOf Nestedctl Is ComboBox Then
                    AddHandler Nestedctl.TextChanged, AddressOf TextChangedCbox
                End If
                TextChangedToAllComboBox(Nestedctl)
            Next Nestedctl
        End If
    End Sub
    Private Sub TextChangedCbox(ByVal sender As Object, ByVal e As System.EventArgs)
        MsgBox("Current Combobox Fired " & sender.name.ToString)
    End Sub

و الله أعلم

RecursionComboBoxes.zip

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

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

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