2012-06-29 5 views
3

У меня есть таймер с текстовым полем, отображающим значение Timespan (продолжительность). Когда я останавливаю таймер, я хочу отредактировать значение Timespan с помощью элемента UpDown. я хочу что-то вроде этого:Как изменить значения временных интервалов с помощью элемента управления UpDown с помощью VB.NET?

enter image description here

Но выше контроль является DateTimePicker со свойством Format установлен в «Custom», свойство CustomFormat устанавливается в «HH: мм: сс» и свойство ShowUpDown в правда.

Таким образом, он может отображать только значения даты.

Я хочу, чтобы он отображал значения временного интервала (например, «32.23: 59: 59») и с помощью элемента управления UpDown для редактирования секунд или минут или часов или дней в зависимости от того, что отмечено курсором.

Как это возможно?

Должен ли я создать собственный элемент управления с нуля?

Заранее спасибо.

Отредактировано: После долгих размышлений и экспериментов я обнаружил, что если контроль DomainUpDown имел методы SelectionStart и SelectionLength можно было бы редактировать TimeSpan с помощью элемента управления DomainUpDown.

I submitted such a proposal to the Visual Studio UserVoice site. Please vote up for such a feature!

+0

Если вы хотите только отрезок времени, то вы не должны использовать DateTimePicker ... вы не пытаетесь выбрать дату/время. –

+0

Итак, я должен исключить элемент управления UpDown для редактирования временного интервала? Элемент UpDown используется только для DateTimePicker? Должен ли я использовать две кнопки (увеличение/уменьшение времени)? Заранее спасибо. – Novemberland

+1

Вы можете использовать NumericUpDownControl без использования DateTimePicker, но я все еще подозреваю, что он не будет играть хорошо, имея промежуток времени. –

ответ

1

Используйте DateTimePicker, но установите следующие свойства

Формат = Время

ShowUpDown = True

Я думаю, что это то, что вы хотите.

Если вы хотите дни там, просто установить формат = Пользовательский и CustomFormat = «дд: чч: мм: сс»

+0

Если я выбираю время форматирования, то появляется время с «am» или «pm». Мне нужен только формат времени – Novemberland

+0

Это странно. Мой быстрый макет не показывает am/pm. Это похоже на ваш пример выше. Попробуйте это с опцией пользовательского формата, которую я перечислил выше. Если вам это больше нравится, просто посмотрите на форматирование, если хотите добавить месяцы или миллисекунды и т. Д. – APrough

+0

Значения timeSpan имеют формат 10.59: 59: 59. Это то, что я хочу. Мне не нужен формат dateTime. – Novemberland

0

Если ты мертв набор на использование этого элемента управления для «промежутка времени», И вы можете быть уверены, что ваш TimeSpan находится в 24 часов,

ReadOnly baseDate As DateTime = New DateTime(2000, 1, 1) 
Dim myTimeSpan As New TimeSpan 
''// set value 
DateTimePicker1.Value = baseDate.Add(myTimeSpan) 
''// retrieve value 
myTimeSpan = DateTimePicker1.Value.Subtract(baseDate) 

, но тогда вы должны быть в состоянии справиться, что происходит с timespans больше чем 24 часов или отрицательного timespans