Как запустить событие в коде 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)

Просто позвони

btnStart.PerformClick()

Вы пытаетесь реализовать плохую идею. На самом деле, вы должны создать подпрограмму для выполнения таких задач.

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Метод публичный, как я описал здесь .

Другие вопросы по тегам