How do I fire an event in VB.NET code?
events, raiseevent, vb.net
Solution
You should send a button as `sender` into the event handler:
btnStart_Click(btnStart, New EventArgs())
Problem
I have a form that has a start button (to allow users to run the processes over and over if they wish), and I want to send a `btnStart.Click` event when the form loads, so that the processes start automatically. I have the following function for the `btnStart.Click` event, but how do I actually tell Visual Basic 'Pretend someone has clicked the button and fire this event'? I've tried going very simple, which essentially works. However, Visual Studio gives me a warning `Variable 'sender' is used before it has been assigned a value`, so I'm guessing this is not really the way to do it: ``` Dim sender As Object btnStart_Click(sender, New EventArgs()) ``` I have also tried using `RaiseEvent btnStart.Click`, but that gives the following error: 'btnStart' is not an event of '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 ```