Значение по умолчанию DateTimePicker: Как избежать его?

Я думаю, что важным фактором является уровень комфорта разработчика.

Вероятно, верно, что использование transform или for_each - правильное решение, но оно не является более эффективным, и рукописные циклы по своей природе не опасны. Если разработчику потребуется полчаса, чтобы написать простой цикл, а не полдня, чтобы получить правильный синтаксис для transform или for_each и переместить предоставленный код в функцию или объект функции. И тогда другие разработчики должны будут знать, что происходит.

Новому разработчику, вероятно, лучше всего научиться использовать transform и for_each, а не циклы ручной работы, так как он сможет использовать их последовательно без ошибок. Для остальных из нас, для которых написание циклов является второй натурой, вероятно, лучше придерживаться того, что мы знаем, и лучше познакомиться с алгоритмами в наше свободное время.

Скажем так: если бы я сказал своему боссу, что провел день, превращая петли ручной работы в for_each и преобразовывая вызовы, я сомневаюсь, что он был бы очень рад.

7
задан Jhonny D. Cano -Leftware- 9 September 2009 в 15:52
поделиться

5 ответов

Мое уродливое решение этой проблемы состоит в том, чтобы активировать вкладку, на которой находится DTP, перед изменением ее значений, примерно так:

DateTime dat1 = DateTime.Today;
DateTime dat2 = dat1.AddDays(1).AddSeconds(-1);

dtpCreatedStart.Value = dat1;
dtpCreatedEnd.Value = dat2;
tbc.SelectTab(1);
dtpModifiedStart.Value = dat1;
dtpModifiedEnd.Value = dat2;
tbc.SelectTab(0);
1
ответ дан 7 December 2019 в 05:25
поделиться

DateTimePicker имеет некоторые проблемы с сохранением и получением его значения. У меня возникли проблемы при привязке Value к DateTime, не допускающему значения NULL - время от времени я получал NullReferenceExeptions. Не знаю, почему и когда. Иногда это просто происходило и приводило к сбою приложения.

0
ответ дан 7 December 2019 в 05:25
поделиться

Я просто столкнулся с той же проблемой, используя два DateTimePickers. Я смог заставить их обоих показывать правильное значение, динамически генерируя их и добавляя в форму.

0
ответ дан 7 December 2019 в 05:25
поделиться

Я выяснил, в чем проблема.

Свойство Value устанавливает новое значение, только если виден элемент управления DateTimePicker . В противном случае команда игнорируется.

Тестовый пример:

Не работает:

 this.picker = new DateTimePicker
        {
            Checked = false,
            Font = new System.Drawing.Font("Verdana", 9.75F),
            Format = System.Windows.Forms.DateTimePickerFormat.Time,
            Location = new System.Drawing.Point(5, 5),
            Name = "picker",
            ShowUpDown = true,
            Size = new System.Drawing.Size(120, 23),
            Visible = false
        };
        this.Controls.Add(this.picker);
        this.picker.Value = this.picker.Value.Date.AddHours(1);
        this.picker.Visible = true;

Работает:

 this.picker = new DateTimePicker
        {
            Checked = false,
            Font = new System.Drawing.Font("Verdana", 9.75F),
            Format = System.Windows.Forms.DateTimePickerFormat.Time,
            Location = new System.Drawing.Point(5, 5),
            Name = "picker",
            ShowUpDown = true,
            Size = new System.Drawing.Size(120, 23),
            Visible = false
        };
        this.Controls.Add(this.picker);
        this.picker.Visible = true;
        this.picker.Value = this.picker.Value.Date.AddHours(1);

Кажется, не имеет ничего общего с программным добавлением средства выбора.

4
ответ дан 7 December 2019 в 05:25
поделиться

Если вы не можете заставить его работать, вы всегда можете попробовать использовать другое средство выбора. Виджет календаря AJAX Datepicker / Timepicker Any + Time (TM) извлекает свое значение из связанного поля, поэтому, если вы инициализируете поле значением или измените поле, чтобы оно имело значение (например, в onload ), то это то, что вы получите, когда отобразится средство выбора. А если у вас возникнут проблемы, просто отправьте сообщение через страницу контактов, и оно будет рассмотрено как можно скорее.

0
ответ дан 7 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: