none
TextBox não aceita digitação RRS feed

  • Pergunta

  • Olá Pessoal!

    Estou desenvolvendo minhas primeiras telas em WPF, já tenho uma aplicação windows forms a qual estou migrando aos poucos as telas para WPF como aprendi no artigo Interoperabilidade entre Windows Forms e WPF no tópico Usando janelas WPF em aplicações WinForms.

    Em minha aplicação WF eu chamo minha tela WPF e estava tudo funcionando perfeitamente, mas agora estou tendo alguns problemas com o TextBox, parou de aceitar a digitação, esta aceitando somente espaço. O mais estranho é que criei uma outra aplicação WF simples (uma tela com um botão para chamar a tela WPF) usando a mesma dll da minha tela WPF e nesta outra aplicação WF o TextBox da minha tela WPF esta funcionando normalmente).

    Alguém tem alguma explicação para isso?

     

    Desde já agradeço


     

    • Editado Fabiano Vilela sexta-feira, 3 de setembro de 2010 16:54 Adição link artigo
    sexta-feira, 3 de setembro de 2010 15:35

Respostas

  • Já resolvi o problema, dei mais uma lida no artigo e encontrei a solução:

    Ao executar o programa e dar um clique no botão, a janela WPF é mostrada. Note que, quando você tenta teclar algo na janela WPF, nada aparece. Isto é devido ao fato que o processamento do teclado é feito de maneiras diferentes entre as aplicações WPF e WinForms. Para solucionar este problema, devemos chamar ElementHost.EnableModelessKeyboardInterop antes de mostrar nossa janela. No manipulador do clique do botão, altere o código para:

    Isto deve ser feito para cada janela WPF que é chamada na aplicação WinForms. . Para chamar esta função, devemos adicionar a referência ao assembly WindowsFormsIntegration.dll e adicionar o namespaceSystem.Windows.Forms.Integration à lista de namespaces usados. Execute o programa e verifique que a entrada de dados passa a ser processada normalmente.

    o código ficou assim:

    Screens.Users users = new Screens.Users();
    System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(users);
     
    
    O mais estranho é que parou de funcionar do nada e no outro projeto de testes ainda continuou funcionando e fui conferir e nele não tem a chamada 
    ao ElementHost.EnableModelessKeyboardInterop. 

    No outro que parou de funcionar, fiz a chamada ao ElementHost.EnableModelessKeyboardInterop e esta funcionando perfeitamente.

     

    • Marcado como Resposta Fabiano Vilela sexta-feira, 3 de setembro de 2010 19:16
    sexta-feira, 3 de setembro de 2010 19:16