Checklistbox多选

时间:2015-01-08 21:04:54

标签: vb.net cmd

我一直在研究使用Checkedlistbox的应用程序,因此我可以允许用户选择多个框。

    Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
    For Each item As Object In Me.CheckedListBox1.CheckedItems
        Dim text As String = Me.CheckedListBox1.GetItemText(item)
    Next

    If text = "Line 1" Then
        CreateLine1()
    End If

    If text = "Line 2" Then
        CreateLine2()
    End If

    If text = "Line 3" Then
        CreateLine3()
    End If

    If Text = "Line 4" Then
        CreateLine4()
    End If

    If Text = "Line 5" Then
        CreateLine5()
    End If

它一直到第10行和第34行。当应用程序运行时,使用cmd.exe连接到telnet并发送命令。如果我选择了第1行和第2行,则第1行没有问题,但是当第2行运行时,它会打开一个cmd,几秒钟没有,打开另一个cmd,并且在没有连接到telnet的情况下只运行命令。还有几个寡妇打开后记,四个或第五个窗口连接到telnet。

如果在运行telnet之后选择了一行,它怎么能这样做呢?它将该行分离为"已经运行"然后去下一行以避免我的问题。

添加信息: 这个应用程序有一个全选和取消全选按钮,所以我不能有任何会干扰它们的东西。

我已经尝试使用套接字替换cmd.exe .....它没有那么顺利,我会传递它。

除了IP地址和一些命令之外,每个子行的基本相同。

1 个答案:

答案 0 :(得分:1)

我希望您发布的原始代码实际上并不是您正在使用的代码...它看起来并不合适。

也许这样的事情可能会更有用:

Imports System.Reflection
Public Class Form1

    Private Methods As New List(Of MethodInfo)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim MI As MethodInfo
        For i As Integer = 1 To 10
            mi = Me.GetType.GetMethod("CreateLine" & i, Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Public)
            If Not IsNothing(MI) Then
                Methods.Add(MI)
            End If
        Next
    End Sub

    Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
        For Each Index As Integer In Me.CheckedListBox1.CheckedIndices
            Methods(Index).Invoke(Me, Nothing)
        Next
    End Sub

    Private Sub CreateLine1()
        Debug.Print("CreateLine1()")
    End Sub

    Private Sub CreateLine2()
        Debug.Print("CreateLine2()")
    End Sub

    Private Sub CreateLine3()
        Debug.Print("CreateLine3()")
    End Sub

    Private Sub CreateLine4()
        Debug.Print("CreateLine4()")
    End Sub

    Private Sub CreateLine5()
        Debug.Print("CreateLine5()")
    End Sub

    Private Sub CreateLine6()
        Debug.Print("CreateLine6()")
    End Sub

    Private Sub CreateLine7()
        Debug.Print("CreateLine7()")
    End Sub

    Private Sub CreateLine8()
        Debug.Print("CreateLine8()")
    End Sub

    Private Sub CreateLine9()
        Debug.Print("CreateLine9()")
    End Sub

    Private Sub CreateLine10()
        Debug.Print("CreateLine10()")
    End Sub

End Class

还有很多其他方法可以做到这一点......