1

ねえ、私はイベント ハンドラーなどを使用するのが初めてで、1 つを機能させるのにいくつか問題があります。これは私の名前空間にあります。

public delegate void buttonChange(object sender, EventArgs e);

これはメインの前のフォームです:

public static event buttonChange eventButtonChange;

次に、メイン内に次のものがあります。

buttonChangeListener listener = new buttonChangeListener();
eventButtonChange += new buttonChange(buttonChangeNeeded);

次に手順:

void buttonChangeNeeded(object sender, buttonChangeArgs e)
    {
        // The Program has moved a state forward
        switch (e.TheNumber)
        {
            case 1:
                // Probe has been purged
                this.SetBtnAutoCycle1(true);
                break;
            case 2:
                //First Auto-Cycle Complete
                this.SetBtnPerf(true);                    
                break;
            case 3:
                //Performance Test Complete
                this.SetBtnAutoCycle2(true);
                break;
            case 4:
                //Second Auto-Cycle Complete
                this.SetBtnReport(true);
                break;
            default:
                break;
        }

最後に別のクラス:

public class buttonChangeArgs : EventArgs
{
    public readonly int TheNumber;

    public buttonChangeArgs(int num)
    {
        TheNumber = num;
    }
}
public class buttonChangeListener
{
    public void changeTheButton(object o, buttonChangeArgs e)
    {
        Console.WriteLine(
            "The button should move down too: {0}",
            e.TheNumber);
    }
}

正直なところ、私はチュートリアルを一通り見て、それらをエミュレートしようとしましたが、MSDN ガイドを含め、それらをよく理解していません。私は大学で勉強していますが、夏の間、彼らのためにいくつかのソフトウェアを開発することを家族に約束しました。今のところ順調ですが、壁にぶち当たりました。

ありがとう

4

1 に答える 1

1

type の 2 番目のパラメーターを持つデリゲートを宣言しましたEventArgsEventArgsただし、メインでは、サブクラスではなく受け入れないハンドラーでサブスクライブしています。コンパイラはここで変換できません。

特定の引数を受け入れるようにデリゲートを宣言することで、これを解決できます。

public delegate void buttonChange(object sender, buttonChangeArgs e);

それに加えて、おそらくあなたMainは静的メソッドです(コンソールアプリケーションを書いていると思います)。その場合、buttonChangeNeeded静的ではないため、の使用法は有効ではありません(少なくとも私たちが見ることができるものから)。

于 2013-06-19T12:46:37.710 に答える