السلام عليكم و رحمة الله و بركاته
المرجو المساعدة بخصوص 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))