Калькулятор с использованием maskedtextbox C#

Только изучаю C#, стоит задача - сделать калькулятор времени с использованием формы.

Решила остановиться на maskedtextbox в качестве полей для ввода и вывода времени в формате чч:мм:cc.

Но не могу точно разобраться как обрабатывать вводимые данные в этих полях.

Вот так выглядит моя форма: введите сюда описание изображения

В прослушивании кнопки "Посчитать" с помощью Switch и case расписала производимые операции. Но у меня проблема с объявлением переменных, какого типа данных они должны в таком случае быть?

Код при прослушивании:

{
    int a, b;
    a = Convert.ToInt16(maskedTextBox1.Text);
    b = Convert.ToInt16(maskedTextBox2.Text);

    switch (comboBox1.Text)
    {
        case "+":
            maskedTextBox3.Text = Convert.ToString(a + b);
            break;
    }
}

Выходит ошибка: Входная строка имела неверный формат


Ответы (1 шт):

Автор решения: Alexander Petrov

Судя по описанию, вы хотите считать время. Для этого можно использовать тип TimeSpan.

Судя скриншоту, вы используете следующие маски: "00:00:00".

Содержимое свойства Text контрола MaskedTextBox будет зависеть от значения TextMaskFormat. По умолчанию оно равно MaskFormat.IncludeLiterals.

В таком формате его можно напрямую распарсить с помощью методов Parse или TryParse.

Код может выглядеть примерно так:

TimeSpan timeSpan1 = TimeSpan.Parse(maskedTextBox1.Text);
TimeSpan timeSpan2 = TimeSpan.Parse(maskedTextBox2.Text);

TimeSpan result = timeSpan1 + timeSpan2;

maskedTextBox3.Text = result.ToString();
→ Ссылка