我有一个ASP.NET应用程序,页面上有很多文本框,需要通过程序执行在各个点进行更新。
这些文本框实际上属于某个类,所以为了便于更新,我想我可以创建一个Dictionary(Of string,object)并将control.ID
和control
添加到它,然后进行更新做这样的事情:
(如果更新textbox.text):
for each kv as KeyValuePair(Of string, object) in mytextboxes
if (kv.Key.Contains("textboxid")) then
DirectCast(kv.Value, TextBox).Text = mystring
end if
next
但是文本框的text属性实际上并没有更新。我主要是为了避免在每次更新文件框时为每个文本框手动执行textbox.text = somestring
。
这是一个可行的解决方案吗? 如果是这样,我做错了什么?
答案 0 :(得分:1)
您的函数需要直接转换控件,而不是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.")
答案 1 :(得分:1)
如果您必须使用字典,请尝试以下方法:
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
答案 2 :(得分:0)
我有一个使用100个按钮的项目,它们共享一个事件处理程序。如果可以在Array中创建所有TextBox,则可以定义公共事件处理程序。以下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