简体   繁体   English

backgroundworker完成后,将两个字符串放入不同的标签中-vb.net

[英]Get two strings into different labels after backgroundworker complete - vb.net

Okay so i have spent times googling for some help or anything that may do the trick i want to do, but nothing helped. 好的,所以我花了很多时间在谷歌上寻找一些帮助或任何可能实现我想要的技巧的东西,但是没有任何帮助。 Anyway so i have this code 反正我有这个代码

Private Sub bw_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bw.DoWork
        Dim Html As String
        Dim wc As New WebClient
        Html = wc.DownloadString("http://somesite/getusername.php?id=" & txtUname.Text)
        Dim mystring As String = Html

        Dim pattern1 As String = "(?<=<br>)(.*?)(?=<br>)"
        Dim pattern2 As String = "(?<=</br>)(.*)(?=<br>)"

        Dim m1 As MatchCollection = Regex.Matches(mystring, pattern1)
        Dim m2 As MatchCollection = Regex.Matches(mystring, pattern2)


        e.Result = txtLastKnown.Text = m1(0).ToString.Replace("*", "").Replace("Last", "")
        e.Result = txtPrevIps.Text = m2(0).ToString.Replace("IPs:", "").Replace("|", vbNewLine)
    End Sub

    Private Sub bw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bw.RunWorkerCompleted
        txtLastKnown.Text = e.Result
        txtPrevIps.Text = e.Result
    End Sub

    Private Sub btnResolve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnResolve.Click
      Private Sub btnResolve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnResolve.Click
        If Not bw.IsBusy Then

            bw.RunWorkerAsync()
        Else
            bw.CancelAsync()
        End If
    End Sub


what i'm trying to do is to get the txtLastKnown.Text = m1(0).ToString.Replace("*", "").Replace("Last", "") into the txtLastKnown.Text box and e.Result = txtPrevIps.Text = m2(0).ToString.Replace("IPs:", "").Replace("|", vbNewLine) into txtPrevIps.Text box after backgroundworker is completed but it's not returning anything? 我想做的是将txtLastKnown.Text = m1(0).ToString.Replace("*", "").Replace("Last", "")放入txtLastKnown.Text框,然后txtLastKnown.Text e.Result = txtPrevIps.Text = m2(0).ToString.Replace("IPs:", "").Replace("|", vbNewLine)在backgroundworker完成后进入txtPrevIps.Text框,但未返回任何内容吗? why? 为什么? can anyone show me how i can do this correctly? 谁能告诉我我如何正确地做到这一点?

Thanks :) 谢谢 :)

ps; PS; i'm trying to get the output of m1(0).ToString.Replace("*", "").Replace("Last", "") and m2(0).ToString.Replace("IPs:", "").Replace("|", vbNewLine) into two text box. 我正在尝试获取m1(0).ToString.Replace("*", "").Replace("Last", "")m2(0).ToString.Replace("IPs:", "").Replace("|", vbNewLine)为两个文本框。

for example txtPrevIps.Text will output/show 77.775.766.79 and txtPrevIps.Text will output/show 83.383.738.382 82.39.39.823 86.383.932.93 例如txtPrevIps.Text将输出/显示77.775.766.79txtPrevIps.Text将输出/显示83.383.738.382 82.39.39.823 86.383.932.93

so basically i want that "77.775.766.79" into txtPrevIps.Text and 83.383.738.382 82.39.39.823 86.383.932.93 into txtPrevIps.Text after background worker is completed. 所以基本上我希望后台工作人员完成后,将"77.775.766.79"转换为txtPrevIps.Text ,将83.383.738.382 82.39.39.823 86.383.932.93转换为txtPrevIps.Text

Try doing it like this: 尝试这样做:

Private Sub bw_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bw.DoWork

    '...

    e.Result = New String() { _
        m1(0).ToString.Replace("*", "").Replace("Last", ""), _
        m2(0).ToString.Replace("IPs:", "").Replace("|", vbNewLine) _
    }

End Sub

Private Sub bw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bw.RunWorkerCompleted
    If (Not e.Error Is Nothing) Then
        Throw e.Error
    End If
    Dim result As String() = DirectCast(e.Result, String())
    txtLastKnown.Text = result(0)
    txtPrevIps.Text = result(1)
End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM