PDA

View Full Version : سوال: چگونگی دسترسی به آرايه ای از TextBox ها



user2535
پنج شنبه 19 فروردین 1389, 15:57 عصر
باسلام
درنمونه زير آرايه اي از تکست باکسها تعريف شده است ولي اگر بخواهم بايک دستور در کليه تکست باکسها آرايه ديگري را بگذارم خطاي Object reference not set to an instance of an object. روي مي دهد
ممنون

ACorvinus
پنج شنبه 19 فروردین 1389, 20:09 عصر
سلام برادر.

دلیل این خطا اینه که وقتی شما دارین TextBox ها رو به آرایه Set می کنین، در آرایه Nothing ذخیره میشه نه TextBox چون هنوز کنترل های فرم شما Handle نگرفتن.

ببینین کدهایی که نوشتم به دردتون میخورن؟!!!



Public Class Form1
Private Ctrls As New Generic.Dictionary(Of String, Control)
Private captionkol As String() = {"", "نمونه1", "نمونه2", "نمونه3", "نمونه4", "نمونه5", "نمونه6"}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i = 1 To 6
CType(Me.Ctrls("TextBox" + i.ToString), TextBox).Text = captionkol(i)
CType(Me.Ctrls("Label" + i.ToString), Label).Text = "نمونه"
Next
End Sub
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
For Each Ctrl As Control In Me.Controls
If TypeOf Ctrl Is TextBox OrElse TypeOf Ctrl Is Label Then
Ctrls.Add(Ctrl.Name, Ctrl)
End If
Next
End Sub
End Class

user2535
جمعه 20 فروردین 1389, 12:07 عصر
از کدهاي مفيد تون ممنون
ولي مشکل طور ديگري حل شد . آرايه را به استرينگ تبديل کردم و از کنترلها استفاده کردم


Public Class Form1
Dim Txbkol() As String = {"TextBox1", "TextBox2", "TextBox3", "TextBox4", "TextBox5", "TextBox6"}
Dim lblkol() As String = {"Label1", "Label2", "Label3", "Label4", "Label5", "Label6"}
Dim captionkol() As String = {"نمونه1", "نمونه2", "نمونه3", "نمونه4", "نمونه5", "نمونه6"}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i As Integer = Txbkol.GetLowerBound(0) To Txbkol.GetUpperBound(0)
Me.Controls(Txbkol(i)).Text = captionkol(i)
Me.Controls(lblkol(i)).Text = captionkol(i)
Next
End Sub
End Class