几个月前我开始编程,而且我很难使用Process.Start命令。
在第一种形式中,我制作了一个可以设置时间并打开程序的计时器,我在我的TextBox框中定义了它的位置(我构建的另一个vb应用程序), 根据输入的时间并按下“设置”按钮,当它打开您选择的文件时。
由于某种原因,它会打开10个多窗口,在浏览JPG文件时,它只打开一次,多个窗口问题只发生.exe文件。
有谁知道原因?
到目前为止,这是我的代码:
Public Class startup
Dim iSetTime As Date
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If txtTMinute.Text <> String.Empty Then
Clipboard.SetText(txtTMinute.Text)
Else
Clipboard.Clear()
End If
txtTSecond.Clear()
txtTSecond.Paste()
If (Timer1.Enabled = True) Then
Timer1.Enabled = False
End If
iSetTime = txtTHour.Text + ":" + txtTMinute.Text + ":" + txtTSecond.Text
Timer1.Enabled = True
Label6.Text = "Timer not activated."
Me.Refresh()
System.Threading.Thread.Sleep(1000)
'MessageBox.Show("Activated Succesfully")
Label6.Text = "Timer Activated!"
Label6.ForeColor = Color.Green
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If (TimeOfDay = iSetTime) Then
Process.Start(TextBox1.Text)
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Using ofd As New OpenFileDialog
ofd.Filter = "All files (*.*)|*.*"
ofd.Title = "Select File"
If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
Me.TextBox1.Text = ofd.FileName
End If
End Using
End Sub
End Class
答案 0 :(得分:1)
你没有使用enabled = true或false,你使用timer.start或timer.stop,我不知道为什么你甚至使用计时器来做这个?无论发生了什么,计时器都会在一小段时间后不断循环遍历代码,因为它是一个定时器,直到你停止它为止。如果您真的想为此任务使用计时器,那么在此行Process.Start(TextBox1.Text)
之后使用此代码:Timer1.Stop
顺便说一下,如果你没有改变定时器的默认间隔,那么它将被设置为100,以毫秒为单位。它等于System.Threading.Thread.Sleep(100)
的同一时间,如果你在System.Threading.Thread.Sleep(1000)
之后停止计时器,那么它已经循环了代码:Process.Start(TextBox1.Text)
10次因为1000/100 = 10 < / p>
答案 1 :(得分:0)
&#34;当我浏览JPG文件时,它只打开一次,只有exe 它是多重的。&#34;
我猜它试图打开你告诉它的任何东西10次,不同的是当你打开一个图像时,它会显示在一个单实例程序中(比如预览,或Windows图像查看器,或任何它恰好被称为),然后&#34;重新打开&#34;在同一个查看器实例中9次。
在此行设置断点:
Process.Start(TextBox1.Text)
在调试器中运行应用程序后遇到断点时,将鼠标移到IDE中上一行TimeOfDay
和iSetTime
中的两个变量,并比较它们的值。由于TimeOfDay
的TimeSpan数据格式和iSetTime
作为日期之间的隐式转换,我愿意打赌您获得多个True案例。