Есть 3 кнопки: год, месяц и день. Нужно сделать так, чтобы следующая становилась активной только после того как пользователь выберет значение на предыдущей.
Изначально месяц и день неактивные - с этим проблем не возникло, а вот присвоить значение true не получается.
И MessageBox в конце тоже не появляется.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
namespace lab4 { public partial class MainWindow : Window { string a, b, c; DateTime now = DateTime.Now; public MainWindow() { InitializeComponent(); Month.IsEnabled = false; Day.IsEnabled = false; } private void Year_SelectionChanged(object sender, SelectionChangedEventArgs e) { } private void Month_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (Year.Text.Length != 0) { Month.IsEnabled = true; } } private void Day_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (Month.Text.Length != 0) { Day.IsEnabled = true; } a = Year.Text; int year = Int32.Parse(a); b = Month.Text; int month = Int32.Parse(b); c = Day.Text; int day = Int32.Parse(c); DateTime dt = new DateTime(); dt.ToString(); DateTime dt2 = new DateTime(year, month, day); if (Day.Text.Length != 0) MessageBox.Show("С выбранной даты прошло:\n" + dt2.Subtract(now)); } } } |
@Marina_Rar В коде, который вы представили, нет ошибок, которые могли бы приводить к тому, что ComboBox не меняет свое состояние на активное. Однако, некоторые моменты могут влиять на отсутствие отображения сообщения в методе Day_SelectionChanged.
Во-первых, вам стоит проверять значения всех ComboBox перед показом сообщения, а не только значение последнего.
1
|
if (Year.Text.Length != 0 && Month.Text.Length != 0 && Day.Text.Length != 0) |
Во-вторых, в методе Month_SelectionChanged вы проверяете только значение первого ComboBox, но не делаете это для остальных. Вам следует сделать так же и для них
1
|
if (Year.Text.Length != 0 && Month.Text.Length != 0) { Day.IsEnabled = true; } |
В-третьих, в методе Day_SelectionChanged вы используете метод ToString() для переменной dt, которая никак не инициализирована. Это может приводит к ошибке. Вам следует использовать dt2 для отображения даты.