開始ボタン(ユーザーが必要に応じてプロセスを繰り返し実行できるようにする)があるフォームがあり、フォームが読み込まれるときに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
ボタンを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)
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()