Asp.net 将控件添加到集合并从集合更新
我有一个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 这是可行的解决方案吗? 如果是,我做错了什么?您的函数需要直接强制转换控件,
控件.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