如何从文本框中检索逗号分隔的值字符串?

时间:2010-11-03 18:37:50

标签: asp.net vb.net

我有一个文本框和3个复选框; checkbox1,checkbox2,checkbox3

在文本框中我们有1,2,3

如果我输入textbox1 = 1,2那么

复选框1和复选框2将被选中,复选框3将保持未选中状态.....

如何在vb.net中执行此操作

3 个答案:

答案 0 :(得分:1)

使用String.Split功能。

答案 1 :(得分:1)

这样的事情应该适合你:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    For Each s As String In TextBox1.Text.Split(","c)
        Dim i As Integer
        If Int32.TryParse(s, i) Then
            Dim result As Control = Page.FindControl("checkBox" + i.ToString())
            If result IsNot Nothing Then
                DirectCast(result, CheckBox).Checked = True
            End If
        End If
    Next
End Sub

如果您的复选框位于不同的容器而不是主页面中,则需要调用FindControl on that control instead of Page.FindControl`。

编辑:听起来你是从复选框选择来建立文本框值。根据你的评论,你看起来也有一个尾随的逗号,也许是因为你在一个循环中附加一个逗号。您应该向我们提供代码,以便更好地了解您正在做的事情。

要回答评论中的问题,要对“3,1”进行排序,您可以使用:

Dim input As String = "3,1,"
Dim split As String() = input.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries)
Dim result As String = String.Join(",", split.OrderBy(Function(i) i).ToArray())

实际上,您可能希望按整数类型排序,而不是按字符串排序,因为排序顺序最终会让您感到惊讶的是更大的数字。

答案 2 :(得分:0)

脱离我的头顶

dim v = Split(textbox.text, ",")
for each i in v
    select case val(i)
       case 1:checkbox1.checked =true
       case 2:checkbox2.checked = true
       case.....
    end select
next