Asp.net 将控件添加到集合并从集合更新

Asp.net 将控件添加到集合并从集合更新,asp.net,vb.net,collections,web-controls,Asp.net,Vb.net,Collections,Web Controls,我有一个ASP.NET应用程序,页面上有很多文本框,需要在程序执行过程中的不同点进行更新 这些文本框实际上属于某个类,因此为了便于更新,我想我可以创建一个字典(包含字符串、对象)并向其中添加控件.ID和控件,然后进行如下更新: (在更新textbox.text时): 但是,textbox的text属性实际上没有得到更新。我主要是为了避免每次更新我的每个文本框时都必须手动执行textbox.text=somestring 这是可行的解决方案吗? 如果是,我做错了什么?您的函数需要直接强制转换控件,

我有一个ASP.NET应用程序,页面上有很多文本框,需要在程序执行过程中的不同点进行更新

这些文本框实际上属于某个类,因此为了便于更新,我想我可以创建一个字典(包含字符串、对象)并向其中添加
控件.ID
控件
,然后进行如下更新:

(在更新textbox.text时):

但是,textbox的text属性实际上没有得到更新。我主要是为了避免每次更新我的每个文本框时都必须手动执行
textbox.text=somestring

这是可行的解决方案吗?
如果是,我做错了什么?

您的函数需要直接强制转换控件,而不是KeyValuePair集合。试试这样的

Private Sub SetTextboxText(ByVal strTextBoxID As String, ByVal strText As String)

    Dim txtChangeThisOne As TextBox = CType(Page.FindControl(strTextBoxID), TextBox)

    If Not txtChangeThisOne Is Nothing Then

        txtChangeThisOne.Text = strText

    End If

End Sub
然后打电话给

SetTextboxText("TextboxID", "Text you wish to set.")

我有一个使用100个按钮的项目,它们共享一个事件处理程序。如果可以在一个数组中创建所有文本框,那么就可以定义一个公共事件处理程序。以下snippit将用作参考。希望VB代码仍然有用。 如果你想测试代码,你需要一个10 X 10的表单和布局。如果有帮助,请告诉我

Public Class Form1
    Private NRow As Integer = 10
    Private NCol As Integer = 10
    Private BtnArray(NRow * NCol - 1) As Button
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TableLayoutPanel1.Size = Me.ClientSize
        For i As Integer = 0 To BtnArray.Length - 1
            BtnArray(i) = New Button()
            BtnArray(i).Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right
            BtnArray(i).Text = CStr(i)
            TableLayoutPanel1.Controls.Add(BtnArray(i), i Mod NCol, i \ NCol)
            AddHandler BtnArray(i).Click, AddressOf ClickHandler
        Next
    End Sub
    Public Sub ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)
        MsgBox("I am button #" & CType(sender, Button).Text)
    End Sub
End Class

如果必须使用字典,请尝试以下方法:

Dim mytextboxes As New Dictionary(Of String, TextBox)
Dim mystring As String = "A Input String."
Dim myTextBoxName As String = "TextBox1"
Dim t As TextBox
For Each c As Object In Me.Controls
    If (TypeOf c Is TextBox) Then
        t = CType(c, TextBox)
        mytextboxes.Add(t.Name, t)
    End If
Next

Try
    mytextboxes(myTextBoxName).Text = mystring
Catch ex As Exception
    MsgBox("There is no " & myTextBoxName)
End Try
Dim mytextboxes As New Dictionary(Of String, TextBox)
Dim mystring As String = "A Input String."
Dim myTextBoxName As String = "TextBox1"
Dim t As TextBox
For Each c As Object In Me.Controls
    If (TypeOf c Is TextBox) Then
        t = CType(c, TextBox)
        mytextboxes.Add(t.Name, t)
    End If
Next

Try
    mytextboxes(myTextBoxName).Text = mystring
Catch ex As Exception
    MsgBox("There is no " & myTextBoxName)
End Try