2016-10-07 64 views
-1

所以我創建了一個函數ParseandWarn來彈出一個消息框,如果輸入不是整數。如果它是一個整數,則必須在click事件上計算兩個輸入的總和。有多個計算,這就是爲什麼我創造了這個功能。 如何在click事件中實現/激活此功能?我得到一個錯誤,可能是解析? 我是編程新手,歡迎任何幫助。在點擊事件中實現函數

public void ParseandWarn() 
    { 
     int Invoergetal1, Invoergetal2; 
     if (!int.TryParse(txtGetal1.Text, out Invoergetal1)) 
     { 
      MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error); 
     } 
     else 
     { 
      if (!int.TryParse(txtGetal2.Text, out Invoergetal2)) 
      { 
       MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error); 
      } 
      else 
      { 
       return; 
      } 
     } 
    } 

    private void btnSom_Click(object sender, RoutedEventArgs e) 
    { 
     int BerekenSom = int.Parse(txtGetal1.Text) + int.Parse(txtGetal2.Text); 
     txtResultaat.Text += "De som van " + txtGetal1.Text + " en " + txtGetal2.Text + " = " + BerekenSom + Environment.NewLine; 

    } 
+0

您是否嘗試過在事件處理程序中調用函數? – t0mm13b

+0

那麼我不知道如何以'正確'的方式做到這一點...... – WilliamV

+0

ParseAndWarn(); – LaneL

回答

1

這將是您正在尋找的代碼。

我已經使用ref作爲函數ParseandWarn的參考,表明參數將爲modified by reference

public bool ParseandWarn(ref int Invoergetal1, ref int Invoergetal2){ 
    bool valid = false; 
    if ((!int.TryParse(txtGetal1.Text, out Invoergetal1) || !int.TryParse(txtGetal2.Text, out Invoergetal2)) { 
     MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error); 
     return false; 
    } 
    return true; 
} 

private void btnSom_Click(object sender, RoutedEventArgs e) 
{ 
    int Invoergetal1, Invoergetal2; 
    bool correctInput = ParseAndWarn(ref Invoergetal1, ref Invoergetal2); 
    if(correctInput) 
    { 
     int BerekenSom = Invoergetal1 + Invoergetal2; 
     txtResultaat.Text += "De som van " + txtGetal1.Text + " en " + txtGetal2.Text + " = " + BerekenSom + Environment.NewLine; 
    } 
} 

我們通過兩個ints到函數,得到TryParse方法的結果,如果失敗的話,它們將包含零代替。

現在,事件處理程序將具有值,並通過計算兩個變量的和來獲得結果。

編輯額外檢查無效輸入或null留作練習。

+0

感謝您花時間幫助並感謝您的明確解釋。 – WilliamV

0

您首先運行ParseAndWarn()。如果ParseAndWarn方法找到兩個正確的數字輸入,則只應運行以下兩行。要做到這一點的方法之一是讓ParseAndWarn方法返回一個布爾值,表示如果解析成功

public bool ParseandWarn() 
{ 
    int Invoergetal1, Invoergetal2; 
    if (!int.TryParse(txtGetal1.Text, out Invoergetal1) || !int.TryParse(txtGetal2.Text, out Invoergetal2) 
    { 
     MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error); 
     return false; 
    } 
    return true; 
} 

private void btnSom_Click(object sender, RoutedEventArgs e) 
{ 
    bool correctInput = ParseAndWarn(); 
    if(correctInput) 
    { 
     int BerekenSom = int.Parse(txtGetal1.Text) + int.Parse(txtGetal2.Text); 
     txtResultaat.Text += "De som van " + txtGetal1.Text + " en " + txtGetal2.Text + " = " + BerekenSom + Environment.NewLine; 
    } 
} 

您也可以結合這一切在點擊事件,以避免解析兩次

private void btnSom_Click(object sender, RoutedEventArgs e) 
{ 
    int Invoergetal1, Invoergetal2; 
    if (!int.TryParse(txtGetal1.Text, out Invoergetal1) || !int.TryParse(txtGetal2.Text, out Invoergetal2) 
    { 
     MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error); 
    } 
    else 
    { 
     int BerekenSom = Invoergetal1 + Invoergetal2; 
     txtResultaat.Text += "De som van " + Invoergetal1 + " en " + Invoergetal2 + " = " + BerekenSom + Environment.NewLine; 
    } 
} 
+0

謝謝!我不想結合,因爲我有多個點擊(總和,產品...)。 – WilliamV