Como você faz uma barra de faixa Winform (deslizante) se comportam de forma sensata em um monitor touch-screen

StackOverflow https://stackoverflow.com/questions/755671

Pergunta

O que é a maneira mais fácil de modificar uma barra de faixa Winforms de modo que quando um usuário clica em que a barra de faixa salta para a localização do mouse?

Por padrão, as barras pista move-se para a meio caminho entre a sua localização atual e onde o mouse foi clicado.

Update: Eu estou tentando fazer isso para que eu possa usar a barra de faixa de um touch-screen. Com um arrastar-tela de toque é muito difícil, portanto, o requisito para a barra para saltar direto para onde as torneiras do usuário.

Foi útil?

Solução

Eu nunca fiz isso, mas eu gostaria de começar por olhar para a localização do clique do mouse. Eu poderia, então, descobrir o quão longe em toda a extensão atual do trackbar o clique foi localizado e definir a localização do rastreador a esse ponto.

Eu começaria por olhar para substituir o controle e manipular as funções de eventos relacionados com o Mouse (OnMouseDown(), por exemplo). Note-se que, em alguns casos, pode ser importante chamar a implementação da classe base de uma função substituída, certifique-se de considerá-lo numa base caso-a-caso. (Eu só entrou em conflito com isso, por isso é fresco na minha mente.)

Note que você só deve alterar o comportamento dos controles padrão desta maneira se você tiver um muito razão convincente. Eles são padrão, porque eles se comportam de maneira previsível em muitas centenas / milhares de programas. Fazer algo se comportam de forma diferente para apenas o seu programa pode violar a Princípio da Lease Astonishment . A única trackbar que eu posso pensar que eu esperar para se comportar da maneira que você descreve é ??de algum tipo de media player.

Editar: Com base no seu comentário, sim, eu acho que você tem uma razão convincente. :)

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