2016-10-07 7 views
-1

Итак, я создал функцию ParseandWarn, чтобы вскрыть окно сообщения, если вход не является целым числом. Если это целое число, сумма обоих входов должна быть рассчитана на событие click. Существует несколько расчетов, поэтому я создал функцию. Как реализовать/активировать эту функцию в событии 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

Смежные вопросы