Comment puis-je lancer un événement dans VB.NET code?
j'ai un formulaire avec un bouton de démarrage (pour autoriser les utilisateurs à exécuter le processus encore et si ils le souhaitent), et je veux envoyer un btnStart.Click
événement lorsque le formulaire se charge, de sorte que les processus commencent automatiquement.
j'ai la fonction suivante pour l' <!-Mais comment dire à Visual Basic que quelqu'un a cliqué sur le bouton et déclenché cet événement?
j'ai essayé d'aller très simple, essentiellement des œuvres. Cependant, Visual Studio me donne 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 le faire:
Dim sender As Object
btnStart_Click(sender, New EventArgs())
j'ai aussi essayé d'utiliser RaiseEvent btnStart.Click
, mais qui donne l'erreur suivante:
' btnStart 'n'est pas un événement de' MyProject.MyFormClass
Code
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
4 réponses
vous devriez envoyer un bouton comme sender
dans le gestionnaire d'événement:
btnStart_Click(btnStart, New EventArgs())
les étapes à suivre pour participer à l'organisation d'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, il devrait être comme ci-dessous,
btnStart_Click(btnStart, EventArgs.Empty)
vous essayez d'implémenter un mauvais idée. En fait, vous devez faire un sous-routine pour réaliser 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 puis bon vous voulez l'appeler le btnStart's click event
, il suffit d'appeler SeparateSubroutine
. Cela devrait être une façon correcte dans votre cas.