Ответ 1
Вы должны отправить кнопку sender
в обработчик событий:
btnStart_Click(btnStart, New EventArgs())
У меня есть форма, в которой есть кнопка запуска (чтобы пользователи могли запускать процессы снова и снова, если они того пожелают), и я хочу отправить событие btnStart.Click
при загрузке формы, чтобы процессы запускались автоматически.
У меня есть следующая функция для события btnStart.Click
, но как я могу сказать, что Visual Basic "Притворяется, что кто-то нажал кнопку и запустил это событие"?
Я пробовал очень просто, что по сути работает. Однако Visual Studio дает мне предупреждение Variable 'sender' is used before it has been assigned a value
, поэтому я предполагаю, что на самом деле это не так:
Dim sender As Object
btnStart_Click(sender, New EventArgs())
Я также попытался использовать RaiseEvent btnStart.Click
, но это дает следующую ошибку:
'btnStart' не является событием для MyProject.MyFormClass
Imports System.ComponentModel
Partial Public Class frmProgress
Private bw As BackgroundWorker = New BackgroundWorker
Public Sub New()
InitializeComponent()
' Set up the BackgroundWorker
bw.WorkerReportsProgress = True
bw.WorkerSupportsCancellation = True
AddHandler bw.DoWork, AddressOf bw_DoWork
AddHandler bw.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
' Fire the 'btnStart.click' event when the form loads
Dim sender As Object
btnStart_Click(sender, New EventArgs())
End Sub
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
If Not bw.IsBusy = True Then
' Enable the 'More >>' button on the form, as there will now be details for users to view
Me.btnMore.Enabled = True
' Update the form control settings so that they correctly formatted when the processing starts
set_form_on_start()
bw.RunWorkerAsync()
End If
End Sub
' Other functions exist here
End Class
Вы должны отправить кнопку sender
в обработчик событий:
btnStart_Click(btnStart, New EventArgs())
Шаги, связанные с поднятием события, следующие:
Public Event ForceManualStep As EventHandler
RaiseEvent ForceManualStep(Me, EventArgs.Empty)
AddHandler ForceManualStep, AddressOf ManualStepCompletion
Private Sub ManualStepCompletion(sender As Object, e As EventArgs)
End Sub
Итак, в вашем случае это должно быть, как показано ниже,
btnStart_Click(btnStart, EventArgs.Empty)
Вы пытаетесь реализовать плохую идею. На самом деле, вы должны сделать подпрограмму для выполнения таких задач.
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
call SeparateSubroutine()
End Sub
private sub SeparateSubroutine()
'Your code here.
End Sub
И тогда, когда вы хотите вызвать btnStart click event
, просто назовите это SeparateSubroutine
. Это должно быть правильным способом в вашем случае.
Просто позвонить
btnStart.PerformClick()