0

プログラミングクラス用にWP7アプリを作成していますが、整数の状態をチェックするためのコールバック関数を実装し、明示的にチェックするための関数を呼び出さないようにします。整数はボタンを押すだけで繰り返され、最大入力に達したときにこれをチェックするコールバック関数が欲しいのですが、それを実装する方法が完全にはわかりません。

private void Right_Button_Click(object sender, RoutedEventArgs e)
    {
        if (current_input <= MAX_INPUT)
        {
            user_input[current_input] = 3;
            current_input++;
            display_result();
        }

    }

    #endregion

    void display_result()
    {
        //will move alot of this to the a result page
        DateTime time_end = DateTime.Now;
        TimeSpan difference = time_end.Subtract(timer);
        time_stamp = difference.ToString();
        bool combination_error = true;
        if (current_input == 4)
        {
            for (int i = 0; i < MAX_INPUT; i++)
            {
                if (user_input[i] != combination[i])
                {
                    combination_error = false;
                    break;
                }
            }

            if (combination_error)
            {
                MessageBox.Show("Correct combination The timer is " + time_stamp);
            }
            else
            {
                MessageBox.Show("Wrong combination");
            }
        }
    }

current_inputをインクリメントした後、display resultを明示的に呼び出して、実行したくないものを呼び出し、代わりにそのコールバック関数を作成します。

4

1 に答える 1

0

整数にコールバック関数を実際に配置することはできませんが、整数をプロパティとして公開し、プロパティ セッターから関数を呼び出すことができます。この例を見てください:

private int _myInteger = 0;

private int MyInteger {
    get
    {
         return _myInteger;
    } 
    set 
    {
        _myInteger = value;
        if (_myInteger <= MAX_INPUT)
            MyCallBackFunction();
    }
}

private void Right_Button_Click(object sender, RoutedEventArgs e)
{
    MyInteger = MyInteger + 1;
    // Do your other stuff here
}

private void MyCallBackFunction()
{
    // This function executes when your integer is <= MAX_VALUE
    // Do Whatever here
    display_result();
}

これが行っていることは、プライベート プロパティを介して整数を公開することです。セッターを介してプロパティを設定する限り (たとえば、MyInteger = MyInteger + 1;構文を使用)、セッターに条件をチェックさせ、コールバック関数を実行させることができます。

于 2012-09-28T19:51:18.450 に答える