2012-09-28 50 views
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"); 
      } 
     } 
    } 

它後,我遞增當前_,我現在明確地調用顯示結果的東西我不願意這樣做,而是爲它創建一個回調函數。

+2

你有什麼企圖?發佈一些代碼,以便我們可以更好地幫助您。 – Bernard

回答

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檢查條件並執行回撥函數。

+0

謝謝你,像一個魅力工作。 –

相關問題