Я пытаюсь инициализировать DateTime в C # с переменной - PullRequest
0 голосов
/ 28 июня 2018

Я здесь довольно новичок, поэтому мой вопрос может быть глупым, но я не смог найти ничего похожего на мой вопрос. Я программирую в VS 2017 приложение winforms. Я пытаюсь инициализировать DateTime с переменным годом и месяцем. Мой код выглядит так:

  int month = comboBox1.SelectedIndex;
  month++;
  label1.Text = month.ToString();
  DateTime dt = new DateTime(year,month,1);

«Месяц» изменяется каждый раз, когда пользователь нажимает на поле со списком и выбирает другой месяц. То же самое в течение года, но это не терпит крах, и я создал ярлык, который показывает, что содержит «месяц» (всегда показывая 1-12 в зависимости от того, в каком месяце щелкнули).

Я получаю исключение вне диапазона, говоря, что это недопустимый DateTime. (например, 13 месяцев или около того, но это не так, поскольку я проверил это с помощью ярлыка)

Странное поведение, которое я мог наблюдать: когда переменная «month» больше 6 (я только что добавил еще «month ++»), она не падает. Однако происходит сбой, когда я нажимаю на декабрь, так как месяцу тогда 13 лет. Но это должно быть стандартным.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вот как вы можете получить номер месяца из названия месяца: новый DateTime (1, месяц, 1) .ToString ("ММММ");

Собираем все вместе

int monthIndex = comboBox1.SelectedIndex + 1; // Gets the Current Index
DateTime dt = new DateTime(year,month,1); // Defines a Date Off Of It
label1.Text = dt.ToString("MMMM"); // Gets Format of Month Name
dt = dt.AddMonths(1); // Adds a Month, This Might End Up in January of Next Year

Ссылка: https://www.dotnetperls.com/datetime-month

0 голосов
/ 28 июня 2018

Использовать дисплей и значение memeber

Создайте пользовательский класс следующим образом:

class Int_String
{
    //important to have get set part
    public _int { get; set; }
    public _string { get; set; }
}

Теперь при создании формы заполняйте свой комбинированный список следующим образом:

List<Int_String> myList = new List<Int_String>();
myList.Add(new Int_String { _int = 1, _string = "January" };
myList.Add(new Int_String { _int = 2, _string = "February" };
myList.Add(new Int_String { _int = 3, _string = "March" };
myList.Add(new Int_String { _int = 4, _string = "April" };
myList.Add(new Int_String { _int = 5, _string = "May" };
myList.Add(new Int_String { _int = 6, _string = "Juny" };
myList.Add(new Int_String { _int = 7, _string = "July" };
myList.Add(new Int_String { _int = 8, _string = "August" };
myList.Add(new Int_String { _int = 9, _string = "September" };
myList.Add(new Int_String { _int = 10, _string = "October" };
myList.Add(new Int_String { _int = 11, _string = "November" };
myList.Add(new Int_String { _int = 12, _string = "December" };

myComboBox.DisplayMember = "_string";
myComboBox.ValueMember = "_int";
myComboBox.DataSource = myList;

И теперь, когда вы хотите создать переменную DateTime, вы создаете ее так:

DateTime date = new DateTime(year, Convert.ToInt32(myComboBox.SelectedValue), 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...