2013-11-08 3 views
0

помогите мне найти ошибку в этом коде, пожалуйста. Я потратил больше часа на это. вот код ..ошибка в выборке разделенной строки из богатого текстового поля

Public Class Form1 
Dim incomingip() As String 
Dim incomingopt() As String 

Private Sub btnloadall_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnloadall.Click 
    Timer1.Start() 
    rtb.Clear() 
End Sub 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
    ProgressBar1.Increment(5) 
    If ProgressBar1.Value = 10 Then 
     sPort.Write("get ip" & vbCr) 
    End If 
    If ProgressBar1.Value = 20 Then 
     Call btnip_Click(sender, New System.EventArgs) 
    End If 
    If ProgressBar1.Value = 30 Then 
     rtb.Clear() 
    End If 
    If ProgressBar1.Value = 40 Then 
     sPort.Write("get opt" & vbCr) 
    End If 
    If ProgressBar1.Value = 50 Then 
     Call btnopt_Click(sender, New System.EventArgs) 
    End If 
    'If ProgressBar1.Value = 40 Then 
    ' rtb.Clear() 
    'End If 

    If ProgressBar1.Value = ProgressBar1.Maximum Then 
     Timer1.Stop() 
    End If 
End Sub 

здесь, каждый раз, когда я что-то в RTB пишу, я всегда ясно, что, так что переменные не будут читать первые из них, которые появляются.

Private Sub btnip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnip.Click 

    incomingip = stringOfRtb.Split(ControlChars.CrLf.ToCharArray) ''vcrlf splitter 
    ''ip parameters 
    ip = incomingip(2).Split("="c) 
    txtIP.Text = ip(1) 

    ip = incomingip(3).Split("="c) 
    txtMask.Text = ip(1) 

    ip = incomingip(5).Split("="c) 
    txtHost.Text = ip(1) 

    ip = incomingip(4).Split("="c) 
    txtDfg.Text = ip(1) 

    ip = incomingip(10).Split("="c) 
    txtBackupIP.Text = ip(1) 

    ip = incomingip(1).Split("="c) 
    cboDhcp.Text = ip(1) 


End Sub 

теперь отображает расщепленные строки из RTB в различные текстовые поля просто отлично ..

Private Sub btnopt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnopt.Click 
    incomingopt = stringOfRtb.Split(ControlChars.CrLf.ToCharArray) ''vcrlf splitter 
    opt = incomingopt(0).Split("="c) 
    txtJointimer.Text = opt(1) 

    opt = incomingopt(1).Split("="c) 
    txtReplace.Text = opt(1) 

    opt = incomingopt(2).Split("="c) 
    txtDeviceID.Text = opt(1) 

    opt = incomingopt(3).Split("="c) 
    txtPassword.Text = opt(1) 

    opt = incomingopt(4).Split("="c) 
    txtFormat.Text = opt(1) 

    opt = incomingopt(5).Split("="c) 
    txtSignal.Text = opt(1) 

    opt = incomingopt(6).Split("="c) 
    txtAverage.Text = opt(1) 
End Sub 

и это событие отображает те же строки! даже если я объявлял разные экземпляры, это событие получает строки из btnip. Это не тот, который я хочу получить от этого. его вроде я использовал входящий сюда. я что-то не вижу?

ответ

1

Я решил. Кажется, что

Public stringOfRtb as String = Form1.rtb.text 

от глобального класса не перезаписывает свои данные. как из комментария от других людей здесь, действительно лучше объявить внутри функции, сделанной с использованием глобальной. вот что я сделал.

Private Sub btnopt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnopt.Click 
    Dim rtbOpt As String = rtb.Text 
    incomingopt = rtbOpt.Split(ControlChars.CrLf.ToCharArray) ''vcrlf splitter 
    opt = incomingopt(0).Split("="c) 
    txtJointimer.Text = opt(1) 

    opt = incomingopt(1).Split("="c) 
    txtReplace.Text = opt(1) 

    opt = incomingopt(2).Split("="c) 
    txtDeviceID.Text = opt(1) 

    opt = incomingopt(3).Split("="c) 
    txtPassword.Text = opt(1) 

    opt = incomingopt(4).Split("="c) 
    txtFormat.Text = opt(1) 

    opt = incomingopt(5).Split("="c) 
    txtSignal.Text = opt(1) 

    opt = incomingopt(6).Split("="c) 
    txtAverage.Text = opt(1) 
End Sub 

сейчас он работает.

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