2015-01-08 2 views
0

나는 여러 상자를 선택할 수 있도록 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"까지 이어집니다. 응용 프로그램이 실행되면 cmd.exe를 사용하여 텔넷에 연결하고 명령을 보냅니다. Line 1과 Line 2를 선택했다면 Line 1이 문제가되지 않지만 Line 2를 실행하면 cmd가 열리고 몇 초 동안 아무 것도 열리지 않고 다른 cmd를 열고 텔넷에 연결되지 않은 상태에서 명령을 실행합니다. 몇 개의 미망인이 이후에 열리고 4 번째 또는 5 번째 창이 텔넷에 연결됩니다.

텔넷을 실행 한 후 한 줄을 선택하면 문제가 발생하지 않도록 다음 줄로 가기 전에 해당 줄을 "실행되었습니다"로 구분합니다.

추가 정보는 : 이 응용 프로그램이있는 선택 - 모든 선택 해제 - 모든 버튼 그래서 내가 그들을 방해 아무것도 할 수 없습니다.

나는 cmd.exe를 대체하기 위해 소켓을 사용하려고 시도했다. ..... 그렇게 잘 가지 않았고 나는 그것을 전달할 것이다.

각 하위 행은 IP 주소와 몇 가지 명령을 제외하고 기본적으로 동일합니다.

+1

당신은 위의 코드를 사용? –

답변

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 

...

+0

훌륭한 예제와 System.Reflection +1 사용! – Codexer

+0

코드는 작동하기 전에 각 하위의 끝에 System.Threading.Thread.sleep()을 수행해야합니다. – Alenhj

+0

원본 질문에서 코드를 편집하여 실제로이 항목을 호출하는 방법과 CreateLineX() 예제를 보여줄 수 있습니까? 수면()을 사용하는 것보다 더 좋은 방법이있을 수 있습니다 ... –

관련 문제