السلام عليكم و رحمة الله و بركاته
المرجو المساعدة بخصوص index textbox1
بحيث انه اذا تكرر نفس الاسم فان index يتغير
مثل textbox1(0)
Textbox1(1)
Textbox1(2)
يعمل في vb6 بدون مشاكل
لكن في vb.net 2010
يحدث خطا
ما تتحدث عنه هو ما يعرف بمصفوفة المكونات (Control Array) حيث يمكن لمجموعة من المكونات من نفس النوع أن يكون لها اسم مشترك واحد، و يميز بنها الـ Index. لكن هذا الأمر لمي عد موجوداً في VB.NET بشكل مباشر.
ممكن تقول لنا الفكرة والغرض يمكن فيه نظره او تطبيق اسهل.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
Public Function GetTextBox(ByVal sender As Control, ByVal Index As Integer) As TextBox
Return (From Control In sender.Controls.Cast(Of Control)() Where _
TypeOf Control Is TextBox AndAlso _
Control.Tag IsNot Nothing AndAlso _
Control.Tag.ToString = Index.ToString _
Select CType(Control, TextBox)).FirstOrDefault
في VB6 كان التعامل مع مجموعة أدوات (من نفس النوع) في إجراء واحد هي بجعلها مصفوفة أداة واحدة كالتالي على سبيل المثال
(ضع ثلاث Text1بمصفوفة و واحد Label)
كود :
Private Sub Text1_Change(Index As Integer)
Select Case Index
Case 0
' أفعل شيئاً
في VB.NET أصبح التعامل مع مجموعة أدوات (لا يشترط نفس النوع) في إجراء واحد هي بجمع أحداثها <المتوافقة> (مع إمكانية عمل إجراء إضافي لحدث أي منها) كالتالي على سبيل المثال
(ضع ثلاث TextBox و واحد Label)
كود :
Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox3.TextChanged
Select Case sender.Name
Case "TextBox1"
' أفعل شيئاً
Case "TextBox2"
' أفعل شيئاً
Case "TextBox3"
' أفعل شيئاً
End Select
Me.Label1.Text = sender.Text
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Dim rand As New Random
Me.Label1.BackColor = Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255))