Olá a todos,
Neste post vou explicar como remover o teclado dos smartphones que possuem windows mobile. Além disso, vou repassar uma dica de como utilizar esse recurso com maior eficiência, prontos?
Porque eu deveria esconder o teclado?
Talvez você esteja se perguntando isso neste momento, é simples, imagine uma tela onde há apenas botões e nenhum campo para digitar, faz sentido dar ao usuário um teclado que ele não vai usar? É muito mais prático remover o teclado e evitar que ele aperte acidentalmente e deixar apenas o que importa na tela.
Como fazer?
Essas funções que envolvem alterações no core são feitas através de P/Invoke. Basicamente, são chamadas feitas à DLLs do próprio sistema operacional através do C#.
Sem mais delongas, vou colocar aqui uma classe com um método para remover o teclado, e é claro, outro para fazer o teclado aparecer novamente.
public static class Keyboard
{
[DllImport("coredll.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("coredll.dll")]
private static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
[DllImport("coredll.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private static void SetSipButton(bool show)
{
IntPtr hSipWindow = FindWindow("MS_SIPBUTTON", "MS_SIPBUTTON");
if (hSipWindow != IntPtr.Zero)
{
IntPtr hSipButton = GetWindow(hSipWindow, 5);
if (hSipButton != IntPtr.Zero)
ShowWindow(hSipButton, (show) ? 1 : 0);
}
}
public static void Hide()
{
SetSipButton(false);
}
public static void Show()
{
SetSipButton(true);
}
}
Para usar é muito fácil. Quer esconder o teclado? Basta escrever:
Keyboard.Hide();
E agora você quer fazer o teclado voltar ao normal?
Keyboard.Show();
Difícil? :}
Agora há um problema, se você colocar isso em todo formulário que você for fazer, você vai repetir este código x vezes, onde x é a quantidade de formulários que você possui.
No coméco eu disse que eu daria uma dica, e a dica é para resolver isso.
Dica
Crie dois formulários que servirão de base. Chame um de KeyboardForm e outro de NoKeyboardForm, faça com que ambos formulários herdem de Form.
No formulário KeyboardForm coloque o código para MOSTRAR o teclado, no formulário NoKeyboardForm coloque o código para ESCONDER o teclado.
Toda novo formulário que você criar, ao invés de herdar de Form (padrão), faça ele herdar de KeyboardForm caso sua tela tenha necessidade de um teclado, caso contrário, herde de NoKeyboardForm.
Simples, elegante, eficiente, e como diria o Steve Jobs, “amazing”, “incredible”, “awesome”, “great”.
Abaixo estou deixando um pacote com uma solução que eu fiz no Visual Studio 2008 com exemplos de uso. É só baixar, abrir e executar.
Clique aqui para fazer o download de 'Removendo teclado no Windows Mobile' (40.28 kB)Espero ter ajudado.