所以我一直在尝试使用VB.net(Windows窗体)创建一个简单的Ping测试应用程序,该应用程序ping所选服务器并返回已用时间。我已经声明了一个ping地址的函数,然后使用一个按钮来ping服务器。问题是,每次ping时,它只会ping一次,因此只给出一个值。我想有一个单独的文本框,用户输入他们想要ping服务器的次数,以获得更准确的结果。
Public Class Form1
Public Function Ping(ByVal server As String) As String
Dim s As New Stopwatch
s.Start()
My.Computer.Network.Ping(server)
s.Stop()
Return s.ElapsedMilliseconds.ToString
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim number As Integer = TextBox3.Text
For i = 1 To number
Try
TextBox1.Text = Ping(TextBox2.Text) & Environment.NewLine
Catch
MsgBox("Please enter a valid address", MsgBoxStyle.Critical, "Error")
End Try
Next
End Sub
End Class
我尝试使用循环重复该过程,然后将结果返回给用户的多行文本框。不幸的是,它仍然只会ping一次地址并且不会继续,除非再次单击ping按钮,但第一个值将替换为下一个值。我相信问题的原因是每次循环后应该有一个换行符并且我尝试使用Enviroment.Newline
但问题仍然存在。有什么建议吗?
最后,我还想计算结果的平均ping,并期望添加所有ping值并除以ping的次数。我如何获得ping的结果并添加它们?
任何帮助都可以理解和解释任何拼写/语法错误。
答案 0 :(得分:4)
在每个循环中,您更改TextBox1
的值,而不是将新值附加到现有值。
或者,您也可以在开始循环之前清除TextBox1
。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim number As Integer = TextBox3.Text
' Clear previous results
TextBox1.Text = String.Empty
For i = 1 To number
Try
' Append new result to existing ones
TextBox1.Text.AppendText(Ping(TextBox2.Text) & Environment.NewLine)
Catch
MsgBox("Please enter a valid address", MsgBoxStyle.Critical, "Error")
End Try
Next
End Sub