我想创建一个按钮,可以阻止我的后台工作程序并结束它正在处理的所有进程.
这是我的示例backgroundworker代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
If BackgroundWorker1.IsBusy <> True Then
BackgroundWorker1.RunWorkerAsync()
End If
Catch ex As Exception
End Try
End Sub
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim counter As Integer = 1
Do
'updated code with stop function----------------
BackgroundWorker1.WorkerSupportsCancellation = True
If BackgroundWorker1.CancellationPending Then
e.Cancel = True
ProgressBar1.Value = 0
Exit Do
End If
'updated code with stop function----------------
ListBox1.Items.Add(counter)
ProgressBar1.Value = ((counter - 1) / limit) …Run Code Online (Sandbox Code Playgroud) 我想编写一个代码button,button当我点击它时,以编程方式点击另一个.
例如,我有两个按钮命名为Button1和Button2,我想要做的是,我点击后Button1,应该点击Button2.这可能吗?
我已经创建了一个与计算机时间同步的实时时钟,并以标签显示.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Time.Text = Date.Now.ToString("h:mm:ss tt")
End Sub
Run Code Online (Sandbox Code Playgroud)
我想制作一个实时的经过时间的功能,它继续计算从开始到停止的时间所经过的秒/分钟/小时,它将基于我创建的实时时钟.我会为此创建一个开始和停止按钮.这可能吗?提前致谢.
我现在能够完成所有内容,并添加了一个功能,根据我的实时时钟记录开始和结束时间.这是我的工作代码:
Dim hr, min, sec As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Time.Text = Date.Now.ToString("h:mm:ss tt")
End Sub
Private Sub Button2_Click(sender As Object, …Run Code Online (Sandbox Code Playgroud) 我有一个VB程序有两种形式,我编写了每种形式的表单加载.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MessageBox.Show("I AM FORM 1")
End Sub
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MessageBox.Show("I AM FORM 2")
End Sub
Run Code Online (Sandbox Code Playgroud)
这是我如何切换Form1和Form2,我使用了一个按钮.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Hide()
Form1.Show()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Hide()
Form2.Show()
End Sub
Run Code Online (Sandbox Code Playgroud)
但每次我切换表单时,表单加载事件只会触发一次.我的代码有问题吗?我猜到了Me.Hide()只会隐藏上一个表格而不是完全关闭它.我希望能够关闭以前的表单,以便当我再次打开它时,表单加载事件将再次触发.
我的代码有效,但我怀疑我做了什么,因为我将CheckForIllegalCrossThreadCalls设置为false,我认为这会给我的后台工作者带来一些副作用.这是我的示例代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub go_Click(sender As Object, e As EventArgs) Handles go.Click
Try
If BackgroundWorker1.IsBusy <> True Then
BackgroundWorker1.RunWorkerAsync()
resetevent.Set()
End If
Catch ex As Exception
End Try
End Sub
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Do
Label1.Text = x
Label2.Text = Label1.Text
Label3.Text = Label2.Tex
Label4.Text = Label3.Text
Label5.Text = Label4.Text
x+=1
Loop While (x < 100)
End Sub
Private Sub …Run Code Online (Sandbox Code Playgroud) 我的程序确实有效,但我认为它会遇到性能问题,它在循环数组时占用了总CPU使用量的40%.通常我的程序只占用CPU使用率的5%以下,我认为ReDim Preserve正在导致这种情况,因为我正在循环大约100,000多行.这是我的代码.
Dim sArray As String()
Dim fStream As New System.IO.FileStream("messages.txt", IO.FileMode.Open)
Dim sReader As New System.IO.StreamReader(fStream)
Dim Index As Integer = 0
Do While sReader.Peek >= 0
ReDim Preserve sArray(Index)
sArray(Index) = sReader.ReadLine
Index += 1
Loop
fStream.Close()
sReader.Close()
Run Code Online (Sandbox Code Playgroud)
除了ReDim Preserve之外,还有其他方法可以将值放入数组吗?在此先感谢,我现在真的陷入了这个问题.
这是我使用List的更新代码.
Dim sArray As String()
Dim sList As New List(Of String)
Dim fStream As New System.IO.FileStream("messages.txt", IO.FileMode.Open)
Dim sReader As New System.IO.StreamReader(fStream)
Dim Index As Integer = 0
Do While sReader.Peek >= 0
sList.Add(sReader.ReadLine)
Loop
sArray = sList.ToArray …Run Code Online (Sandbox Code Playgroud) 我目前有一个使用的表单TabControl有5 TabPages.我想创建一个可以禁用特定按钮的按钮TabPage.
我试过了
TabPage1.Enabled = False
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我该怎么做呢?
vb.net ×7
winforms ×3
arrays ×1
button ×1
filestream ×1
loops ×1
streamreader ×1
tabcontrol ×1
tabpage ×1
timer ×1