2015-01-08 3 views
0

Я работаю над приложением, использующим Checkedlistbox, поэтому я могу разрешить пользователю выбирать несколько ящиков.Checklistbox Multiple Selection

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 для подключения к telnet и отправки команд. Если у меня есть линия 1 и линия 2, то в строке 1 нет проблем, но когда запускается Line 2, открывается cmd, ничего не работает в течение нескольких секунд, откройте другой cmd и запустите только команды, не подключенные к telnet. Еще несколько вдов открывают послесловие, а четыре или пятое окно подключено к telnet.

Как это сделать, если одна строка, если она выбрана после запуска telnet, отделяет эту строку от «Пробела» перед тем, как перейти к следующей строке, чтобы избежать моей проблемы.

Сложение информация: Это приложение имеет отборное-все и отмените-все кнопки, так что я не могу иметь ничего, что будет мешать с ними.

Я попытался использовать сокет для замены 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()? Возможно, лучший способ, чем использование Sleep() ... –

Смежные вопросы