[英]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.79
和txtPrevIps.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.