0

実際に発生せずに、どうすればイベントを実行できますか?

たとえばbutton1_Click()、ボタンをクリックせずにコードでイベントを実行するにはどうすればよいですか?

問題はWebClient、ファイルのリストをdoewnloadsするがあることです。ファイルのダウンロードが完了するたびにDownloadFileCompletedイベントが実行され、次のファイルがダウンロードされます。

ただし、一部のファイルはダウンロードされないため(すべて計画中)、イベントは実行されません。どうすれば実行できますか?ありがとう

4

6 に答える 6

7

イベントハンドラーに存在するすべてのコードを、次のような別の関数に挿入するだけです。

private void button1_click(...)
{
    func(...)
}


public void func(...)
{
    //even handler code
}

イベントを発生させるものがない場合、または発生しない場合は、電話してください

func(...)

私は個人的にイベントハンドラーを明示的に呼び出すことには反対ですが、このアプローチを好みます。私には、より明確なコード構造のようです。

于 2012-05-30T11:07:42.137 に答える
1

空の値を入力して、通常の関数のように呼び出すことができます(結局のところ、送信者と適切なイベント引数が必要なだけの通常の関数です)。例えば

button_click(new object(), new System.EventArgs());

これらは標準のGUIボタンの通常のイベントであり、ボタンには別のイベントが必要な場合があります。このアプローチは、クリックを検出するためにボタンのみが必要であり、イベント引数を使用したくない場合に機能します。

于 2012-05-30T11:07:01.283 に答える
1

多くの場合、コントロールには、Button.PerformClickなどのイベントを発生させる機能があります。

于 2012-05-30T11:07:46.113 に答える
0

ボタンの名前がbutton1の場合、次のコード行でクリックイベントを発生させることができます。

button1.PerformClick();

お役に立てれば!

編集:

または、他の人が言っているように、ロジックを別のメソッドに入れ、必要に応じてメソッドを呼び出します。

于 2012-05-30T11:10:40.950 に答える
0

button1_Click()は単なるメソッドであるため、イベントにバインドした場合でも実行できます。

于 2012-05-30T11:07:23.447 に答える
0

コードをイベントハンドラーから関数に移動する必要があります。

次に、イベントと、それをトリガーするために必要な他のメソッドの両方からこの関数を呼び出すことができます。

したがって、代わりに:

private void button1_Click()
{
    //do something
}

あなたが持っている:

private void button1_Click()
{
    doSomething();
}

public void doSomething()
{
    //do something
}
于 2012-05-30T11:09:05.193 に答える