web-dev-qa-db-ja.com

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

ボタンをsenderとしてイベントハンドラーに送信する必要があります。

btnStart_Click(btnStart, New EventArgs())
23
MarcinJuraszek

イベントの開催に関与する手順は次のとおりです。

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

badアイデアを実装しようとしています。実際、この種のタスクを実行するにはsubroutineを作成する必要があります。

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を呼び出すだけです。これはあなたの場合には正しい方法でなければなりません。

ただ電話する

btnStart.PerformClick()
5
Mandeep Singh