J'ai un formulaire qui a un bouton de démarrage (pour permettre aux utilisateurs d'exécuter les processus encore et encore s'ils le souhaitent), et je veux envoyer un btnStart.Click
événement lors du chargement du formulaire, afin que les processus démarrent automatiquement.
J'ai la fonction suivante pour le btnStart.Click
événement, mais comment puis-je dire à Visual Basic 'Faire semblant que quelqu'un a cliqué sur le bouton et déclencher cet événement'?
J'ai essayé d'aller très simple, ce qui fonctionne essentiellement. Cependant, Visual Studio me donne un avertissement Variable 'sender' is used before it has been assigned a value
, donc je suppose que ce n'est pas vraiment la façon de procéder:
Dim sender As Object
btnStart_Click(sender, New EventArgs())
J'ai également essayé d'utiliser RaiseEvent btnStart.Click
, mais cela donne l'erreur suivante:
'btnStart' n'est pas un événement de '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
Vous devez envoyer un bouton en tant que sender
dans le gestionnaire d'événements:
btnStart_Click(btnStart, New EventArgs())
Les étapes à suivre pour organiser un événement sont les suivantes:
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
Donc, dans votre cas, ce devrait être comme ci-dessous,
btnStart_Click(btnStart, EventArgs.Empty)
Vous essayez de mettre en œuvre une idée mauvaise. En fait, vous devez créer un sous-programme pour accomplir ce genre de tâches.
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
Et là où vous voulez appeler le btnStart's click event
, appelez simplement cela SeparateSubroutine
. Cela devrait être une manière correcte dans votre cas.
Il suffit d'appeler
btnStart.PerformClick()