OliverAL Ответов: 2

Как отформатировать пользовательский ввод в visual studio C# в моем maskedtextbox с fx: 10-02-2020 по 10 февраля 2020 года


// Я создал небольшую форму, где пользователь должен ввести дату, и форма преобразует ее из пользовательского ввода fx: 10-02-2020 в 10-Febuary-2020 - и это код, который я получил до сих пор, но в настоящее время я застрял

string dag, month, year;
       private void buttonOK_Click(object sender, EventArgs e)
       {


           string date = maskedTextBoxDato.Text;


           string day = dato.Substring(0, 2);
           string month = dato.Substring(3, 2);
           string year = dato.Substring(6, 4);


           switch (maskedTextBoxDato.Text)
           {
               case "01":
                   labelFacit.Text = "Januar";
                   break;
               case "02":
                   labelFacit.Text = "Februar";
                   break;
               case "03":
                   labelFacit.Text = "Marts";
                   break;
               case "04":
                   labelFacit.Text = "April";
                   break;
               case "05":
                   labelFacit.Text = "Maj";
                   break;
               case "06":
                   labelFacit.Text = "Juni";
                   break;
               case "07":
                   labelFacit.Text = "Juli";
                   break;
               case "08":
                   labelFacit.Text = "August";
                   break;
               case "09":
                   labelFacit.Text = "Septemper";
                   break;
               case "10":
                   labelFacit.Text = "Oktober";
                   break;
               case "11":
                   labelFacit.Text = "November";
                   break;
               case "12":
                   labelFacit.Text = "December";
                   break;

               default:
                   labelFacit.Text = "Fejl";
                   break;
           }


Что я уже пробовал:

Я пробовал добавлять и удалять код несколько раз и суровые поиски в google.

2 Ответов

Рейтинг:
6

MadMyche

В данной задаче есть 2 фундаментальные части:
1. Поймите, что пользователь ввел в качестве объекта DateTime
2. Дисплей тот же объект datetime формате.

Для первой части лучше всего использовать DateTime.TryParse метод.

string dag, month, year;

private void buttonOK_Click(object sender, EventArgs e)
{
	string date = maskedTextBoxDato.Text;

	DateTime dto;
	if (!DateTime.TryParse(date, out dto))
	{
		// There was a problem reading the user input
		// perhaps regionalization may help out
	} else {
		// to be continued
И вторая часть вашей задачи будет показывать это.
Обычно рекомендуемым способом было бы просто использовать ToString метод и используйте либо стандартные, либо пользовательские строки формата даты и времени.
Однако... по-видимому, вам нужно использовать switch...case блок для форматирования даты.
Поскольку мы получили действительный объект DateTime в первой части этой статьи, это означает, что у нас есть различные свойства; такие как год, месяц и дата - все как свойства типа Int. Это облегчит задачу, так как вам не нужно беспокоиться о том, что ведущих нулей там нет; например, на 10-2-2020 против 10-02-2020.
string MonthName;

switch(dto.Month) {
	case 1:
		MonthName = "Januar";
		break;
	// etcetera
}
labelFacit.Text = MonthName;
Остальные компоненты вашей даты также будут легко конвертированы, просто используя Метод toString метод на этих свойствах также.
string day = dto.Day.ToString();
string month = dto.Month.ToString();
string year = dto.Year.ToString();
А если вам нужны ведущие нули, то доступны стандартные строки числового формата

Рекомендации:
значение datetime.Метод TryParse (Система) | Microsoft Docs[^]
значение datetime.Месяц Собственность (Системы) | Майкрософт Документы[^]
Стандартные строки формата даты и времени | Microsoft Docs[^]
Настраиваемые строки формата даты и времени | Microsoft Docs[^]
Строки стандартного числового формата | Microsoft Docs[^]


Рейтинг:
1

Richard MacCutchan

Вы должны использовать a Класс DatePicker (System.Окна.Элементы Управления) | Microsoft Docs[^] тогда вам не понадобится ни один из вышеперечисленных кодов. Познакомьтесь с ними поближе .Сетевые классы, чтобы вы могли сосредоточиться на бизнес-частях вашего приложения.


OliverAL

Я должен использовать метод switch, к сожалению, он необходим для выполнения задания

Richard MacCutchan

Итак, в чем же проблема?