web-dev-qa-db-fra.com

Comment déclencher un événement dans le code VB.NET?

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

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
18
David Gard

Vous devez envoyer un bouton en tant que sender dans le gestionnaire d'événements:

btnStart_Click(btnStart, New EventArgs())
23
MarcinJuraszek

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)
9
Dev

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()
5
Mandeep Singh