Как запустить событие в коде VB.NET?
У меня есть форма, которая имеет кнопку запуска (чтобы пользователи могли запускать процессы снова и снова, если они хотят), и я хочу отправить 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
5 ответов
Вы должны отправить кнопку как 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's click event
просто позвони SeparateSubroutine
, Это должно быть правильно в вашем случае.
Вы можете создать подкласс кнопки и сделать ее
OnClick
Метод публичный, как я описал здесь .