0

EventHandler複数のボタンを操作するのに問題があります。彼らは同じ仕事をします。それは同じフォーム(ModuleTemplate)にリンクし、そのモジュールに関連する適切なコンテンツをフォームに入力することです。

問題のコードを貼り付けただけです。すべて正常にコンパイルされ、最初のボタン(btnAudioNotetaker)は正常に機能し、他のボタンは何もしません。

public void createAudioNotetaker()
{
    //this button click event works
    btnAudioNotetaker.Click += new EventHandler((sender, e) => btnModule_Click(sender, e, audioNotetakerDict, videoPathDict, pdfPathDict, audioPathDict));
}

public void createClaroRead()
{
    //this one doesn't work
    btnClaroRead.Click += new EventHandler((sender, e) => btnModule_Click(sender, e, audioNotetakerDict, videoPathDict, pdfPathDict, audioPathDict));
}

void btnModule_Click(object sender, EventArgs e, OrderedDictionary pageContent, OrderedDictionary videoPathDict, OrderedDictionary pdfPathDict, OrderedDictionary audioPathDict)
{
    //i want to use this event for each button
    ModuleTemplate newForm = new ModuleTemplate(pageContent, videoPathDict, pdfPathDict, audioPathDict);
    newForm.Show();
    this.Hide();
}
4

2 に答える 2

0

ラムダはクールですが、このコードはより明確だと思います。問題が解決する場合としない場合があります (このコードを試すと、コンパイラ エラーが発生する可能性があります) が、保守ははるかに簡単になります。

public void createAudioNotetaker()
{
    //this button click event works
    btnAudioNotetaker.Click += commonClickHandler;
}

public void createClaroRead()
{
    //this one doesn't work
    btnClaroRead.Click += commonClickHandler;
}

void commonClickHandler(object sender, EventArgs e)
{
    btnModule_Click(sender, e, audioNotetakerDict, videoPathDict, pdfPathDict, audioPathDict));
} 

void btnModule_Click(object sender, EventArgs e, OrderedDictionary pageContent, OrderedDictionary videoPathDict, OrderedDictionary pdfPathDict, OrderedDictionary audioPathDict)
{
    //i want to use this event for each button
    ModuleTemplate newForm = new ModuleTemplate(pageContent, videoPathDict, pdfPathDict, audioPathDict);
    newForm.Show();
    this.Hide();
}
于 2013-01-27T18:47:51.443 に答える
0

私の間違いは、上記のコメントで示唆されているように、switch ステートメントと case ステートメントで createClaroRead 関数を呼び出していませんでした。見逃すなんてばかげたこと。

返信ありがとうございます。

于 2013-01-28T09:12:19.883 に答える