Pergunta

Eu tenho um formulário com uma barra de progresso e um botão que é apresentado como um processo corre cancelar. Os botões "Cancelar" propriedade é definida como true para escapar pressionando, cancela o processo.

Mas, como o botão é o único controle sobre a forma capaz de tirar o foco, deve o usuário, inadvertidamente, pressione enter (ou barra de espaço), enquanto o processo estiver em execução ele será cancelado.

Eu ter evitado a barra de espaço de trabalho, definindo KeyPreview como true (no formulário) em seguida, definindo KeyAscii a 0, mas esta abordagem deson't parecem trabalhar para a tecla enter como o evento é acionado o botão primeiro clique.

Eu tentei definindo a propriedade TabStop do botão para "false" -. Sem alteração

Foi útil?

Solução

Adicionar um botão padrão com 1x1 tamanho, nenhuma legenda, nenhuma borda, etc. Faça um manipulador para ele que não faz nada. A tecla Escape ainda vai fazer um cancelamento como faz agora.

Outras dicas

Na minha opinião, a chave Entre deverá ativar o botão cancelar. Ou exigir que o usuário chegar para o mouse? por quê?

Eu sugiro adicionando apenas um diálogo de confirmação depois que o usuário cancela a operação, então se alguém acidentalmente pressiona a tecla Enter tem a chance de retomar a dizer 'não, eu não quero cancelar'.

Mas como um usuário eu estaria chateado se o botão Cancelar tem o foco e não consigo ativá-lo pressionando a tecla Entre no meu teclado.

Meus 2 centavos

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