2016-04-29 8 views
1

からのイベント(linkLabel2_LinkClicked)を呼び出し:私はオブジェクトの送信者を持ち、任意のない別の方法からそれを呼び出す必要がC#、私はにLinkLabel linkLabel2_LinkClickedのための私のフォームのイベントハンドラ持っている別の方法

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    //code here 
} 

をeventargs:

private void UpdateMethod() 
{ 
    linkLabel2_LinkClicked(this, ?????) 
} 

ボタンの場合は、PerformClickメソッドを呼び出します。しかし、私が見つけることができるLinkLabelのようなものはありません。

linkLabel2_LinkClickedイベントハンドラでコードを実行するベストプラクティスは何ですか?

更新:私はこれについてはっきりしていなかったと思います。私はこのアプローチを見てきたのでベストプラクティスについて疑問に思います。私は答えから、正しいアプローチではなく、コードを別のメソッドに移動し、他のメソッドから直接呼び出すことができます。他の理由があれば教えてください。

アップデート2:

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    CreatePreview(); 
} 

private void UpdateMethod() 
{ 
    CreatePreview(); 
} 

private void CreatePreview() 
{ 
    //code comes here 
} 

それは完璧に動作します:次のように私は今、コードを書き直しました。

+0

なぜdownvoteですか?私はこれを見ました、例えばここに:http://stackoverflow.com/questions/11518529/how-to-call-a-button-click-event-from-another-methodそして私は答え悪い習慣ですが、これが私が最初に尋ねた理由です。 – ib11

答えて

2

とにかくパラメータを使用していないので、nullを渡すことができますが、それに対してはお勧めします。イベントを直接呼び出すことはお勧めではなく、読みにくいコードにつながります。

他のメソッドを呼び出す場合はCreatePreview()としてください。

private void UpdateMethod() 
{ 
    CreatePreview(); 
} 
+2

「落胆しています。」私は完全に同意しています。 EventHandlerメソッドを直接呼び出すことは悪い習慣です。さらに、ビジネスロジック内の関数を呼び出すためにEventHandlerメソッドを使用する必要があります – whymatter

+0

ありがとう、これは役立ちます。 – ib11

+0

私はコードを変更しました。あなたの答えは、私が持っていた問題をデバッグするのに役立ちました。 – ib11

3

あなたはイベントパラメータにnullを置くことができます。

linkLabel2_LinkClicked(this, null); 

または新しいイベントオブジェクトを作成:

linkLabel2_LinkClicked(this, new LinkLabelLinkClickedEventArgs()); 

しかし、別のMethodeのを作成しておき、それを呼び出している最良の方法をあなたがそれを必要とする時間。

+0

それに応じて私のコードを変更しました。 – ib11

関連する問題