C# Невозможно вернуть сообщение об ошибке из метода - PullRequest
0 голосов
/ 10 июля 2020

Я все еще новичок в языке C# и на этой неделе начал больше узнавать о методах. У меня проблема с отображением сообщений об ошибках в моей форме. Любая помощь, направленная на то, чтобы указать мне правильное направление и понять, чего мне не хватает, будет ОЧЕНЬ благодарна. Через несколько часов мне удалось заставить работать publi c int calcAge (int aGE), однако частный void ErrorReturns (string errorStringReturn) вызывает у меня головную боль.

    private void executeButton_Click(object sender, EventArgs e)
    {
        string textBox = nameTextBox.Text;
        DateTime today = DateTime.Now;
        DateTime futurePicker = futureDateTimePicker.Value;
        int AGE = 0;
        string errorString = null;

        
        int ageCalculation = calcAge(AGE);
        ErrorReturns(errorString);

        responseLabel.Text = "Hello " + textBox + "! You will be " + ageCalculation + " on " + futurePicker.ToShortDateString() + '\n' + "A date that is " + (futurePicker - today).Days + " days from now";
    }

    public int calcAge(int aGE)
    {
        DateTime birthdatePicker = birthDateTimePicker.Value;
        DateTime futurePicker = futureDateTimePicker.Value;

        aGE = futurePicker.Year - birthdatePicker.Year;

        if (futurePicker < birthdatePicker.AddYears(aGE))
        {
            aGE--; // Decrement years if the Day has not passed yet.
        }
        return aGE;
    }
    private void ErrorReturns(string errorStringReturn)
    {
        DateTime today = DateTime.Now;
        DateTime birthdatePicker = birthDateTimePicker.Value;
        DateTime futurePicker = futureDateTimePicker.Value;

        if (futurePicker < today)
        {
            responseLabel.Text = "ERROR -- DATE MUST BE IN THE FUTURE -- Please select a date in the future.";
        }
        else if (birthdatePicker > today)
        {
            responseLabel.Text = "ERROR -- DATE MUST BE IN THE PAST -- Please select a date in the past.";
        }
        
    }

Ответы [ 2 ]

2 голосов
/ 10 июля 2020

Что значит errorString? Он не используется в предоставленном коде. метод.

Вы можете это сделать:

private bool CheckDate()
{
  DateTime today = DateTime.Now;
  DateTime birthdatePicker = birthDateTimePicker.Value;
  DateTime futurePicker = futureDateTimePicker.Value;

  if ( futurePicker < today )
  {
    responseLabel.Text = "ERROR -- DATE MUST BE IN THE FUTURE -- Please select a date in the future.";
    return false;
  }
  else 
  if ( birthdatePicker > today )
  {
    responseLabel.Text = "ERROR -- DATE MUST BE IN THE PAST -- Please select a date in the past.";
    return false;
  }
  else
    return true;
}

И теперь вы можете написать:

private void executeButton_Click(object sender, EventArgs e)
{
  string textBox = nameTextBox.Text;
  DateTime today = DateTime.Now;
  DateTime futurePicker = futureDateTimePicker.Value;
  int AGE = 0;
  string errorString = null;

  int ageCalculation = calcAge(AGE);

  if ( CheckDate() )
    responseLabel.Text = "Hello " + textBox + "! You will be " + ageCalculation + " on " + futurePicker.ToShortDateString() + '\n' + "A date that is " + ( futurePicker - today ).Days + " days from now";
}

Я не проверял logi c того, что вы делаете , здесь он решает только отображение.

Чтобы иметь лучший UX, вы не должны использовать ту же метку, а другую вещь, другую метку / изображение красного цвета или окно сообщения, например, чтобы пользователь лучше проинформировать о том, что случилось.

0 голосов
/ 10 июля 2020

Вдобавок к тому, что уже упоминали другие коллеги относительно передачи "errorStringReturn" как null (что не имеет никакого смысла), уверены ли вы, что любое из вышеуказанных условий выполнено? Пожалуйста, сделайте тест и измените следующее на «futurePicker», чтобы проверить, можете ли вы вернуть ошибку в responseLabel.

    else if (futurePicker  > today)
    {
        responseLabel.Text = "ERROR -- DATE MUST BE IN THE PAST -- Please select a date in the past.";
    }

Другой вопрос, показывает ли responseLabel сообщение «Hello. . "в начале?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...