Pergunta

Estou construindo um formulário com winforms - e deve adicionar um ponto de vista e valor intervalo de tempo editável. Que controla funciona melhor para isso?

A normais mostra editar controlar o valor corretamente -> mas não é muito bom para mudar valores

o selecionador tempo normal data não funciona

o controle de edição mascarado não tem qualquer máscara padrão para este

Alguém tem uma boa idéia para um controle para esta tarefa?

Foi útil?

Solução 4

Por outro projeto que eu tinha para editar um intervalo de tempo também.

Eu finalmente usado 3 numérico up / down controles:. O primeiro controla o total de horas, segundo os minutos eo terceiro os segundos

//Setting the values
durationHours.Value = (Decimal)Math.Floor (data.TotalHours);
durationMin.Value = data.Minutes;
durationSeconds.Value = data.Seconds;

//Getting the values
data = new TimeSpan((int)durationHours.Value, (int)durationMin.Value, (int)durationSeconds.Value);

Outras dicas

Eu construí um que tinha uma caixa de texto juntamente com uma caixa de combinação para escolher as unidades. O controle de usuário configurações tiveram alcance (valor + -) e (unidades de tempo). Com base nas unidades escolhidas, a caixa de texto foi variou verificada -. Por exemplo, 1-7 dias pode ser válido, mas se as unidades foram minutos, 1-60 minutos pode ser melhor

Eu fiz combinações de dois ComboBoxes um NumericUpDown também.

Se precisar de intervalos de tempo que são coisas como 3 dias 4 horas 6 minutos, eu provavelmente optar por um controle de usuário com caixa de texto mascarado e Range Conferir as partes.

Normalmente, eu optar pelo primeiro, embora.

Apenas meus dois centavos.

Use a TimeSpan Helper , que inclui um simples controle (que não foi documentado muito bem quando eu usei -lo).

Use uma caixa de texto normal, juntamente com um controle do provedor de erro que verifica o valor usando TimeSpan.TryParse () e uma dica de ferramenta para sugerir que tipo de dados que você está esperando.

Se você quiser, você pode combinar tudo isso em um único controle personalizado, também.

Se você está procurando algum olhar código de trabalho no link abaixo.

Este post fornece código fonte para um usuário WPF controle para selecionar um intervalo de tempo.

Além disso, tente este estendida TimeSpanPicker

Se você não precisa desejar permitir que mais de 24 horas e você não quer especificar milissegundos Eu acho que o seletor de DateTime funciona melhor, especialmente se você criar um controle de usuário para torná-lo um selecionador TimeSpan.

O bom é que você pode UPDOWN as horas / minutos / segundos. Ele automaticamente impede que você defina um tempo de mais de 60 minutos / segundos. A desvantagem: há milissegundos e há vezes mais do que um dia

.

No estúdio desenvolvedor adicionar um novo controle de usuário: TimePicker. No controle de usuário colocar um seletor de DateTime. Alterar as propriedades:

  • Formato: Tempo; Isso faz com que você só vê uma vez (com segundos) até 24 horas
  • ShowUpDown: True: Isso faz com que você não pode abrir um calendário. Você vai ter um up-down para as horas / minutos / segundos.

O formato da hora localizado é usado. Se você quiser um formato de tempo específico usar o formato de hora personalizado.

Reagir sobre o evento validado para ler o valor como um DateTime e subtrair se a partir da meia-noite, no início do mesmo dia. O resultado será um TimeSpan. Retornar esse valor no Valug.Get. Value.Set:. Adicionar o DateTime de hoje meia-noite para o TimeSpan para set

Se você precisar de mais de 24 horas, ou se quiser adicionar milissegundos, adicione uma caixa de texto e uso validação e TryParse. Isto vai mesmo permitir que os usuários carrapatos usado em vez de um notitaion tempo. Se não for validado, use uma dica de ferramenta para exibir o erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top