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 之后,我现在显式调用显示结果我不想做的事情,而是为它创建一个回调函数。

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();
}

这样做是通过私有财产公开您的整数。只要您通过setter 设置属性(例如使用MyInteger = MyInteger + 1;语法),您就可以让setter 检查条件并执行您的回调函数。

于 2012-09-28T19:51:18.450 回答