2014-05-21 1 views
2

Je suis actuellement en train d'essayer de développer un clavier personnalisé pour l'application WinCE.J'ai actuellement un formulaire avec une zone de texte et un bouton. Le problème est comment puis-je maintenir l'accent sur le clavier lorsque je clique sur la souris à SendInput (pour s'assurer que la zone de texte capture cette entrée). Une façon est de définir la propriété "Focusable" mais je n'arrive pas à la définir sur un Windows Form. J'espère que quelqu'un pourrait m'aider à ce sujet. Merci!Maintien du focus sur la zone de texte pendant que je clique sur différents boutons

+0

Dans chaque méthode qui relie à un essai de contrôle ' textbox.Focus(); ' – Ben

+0

Toute personne qui a travaillé avec CE saurait immédiatement ce que cette question demande, plus de preuves ne sont pas nécessaires. Ils font l'erreur novice de ne pas créer un SIP réel et l'accent est mis sur eux. C'est une question tout à fait valide dans sa forme actuelle (et pourquoi ne puis-je pas voter pour rouvrir?). – ctacke

Répondre

1

Vous devez définir TextBox.Focus() sur le gestionnaire d'événements du bouton presse. Je suppose que le bouton a une fonction KeyPress ou KeyDown.

Une alternative plus flexible consisterait à stocker la dernière commande focalisée.

private Control lastFocusedControl; 

Et quand la zone de texte se concentre sur elle définit la valeur en utilisant l'événement GotFocus.

private void TextBox_GotFocus(object sender, EventArgs e) 
{ 
    lastFocusedControl = (Control)sender; 
} 

Ensuite, dans le gestionnaire d'événements, vous pouvez simplement le faire.

lastFocusedControl.Focus(); 
+0

C'est une façon possible, cependant, je veux rendre ma classe de clavier personnalisée portable, ce qui signifie qu'il peut être utilisé dans toutes les formes de fenêtres que j'ai développées. Donc, si possible, je ne veux pas coder en dur. – Ytan

0

Bien qu'il soit pour VB.Net il a quelques bonnes idées: http://msdn.microsoft.com/en-us/magazine/hh708756.aspx

Voir WS_EX_NOACTIVATE et

If (m.Msg = WM_MOUSEACTIVATE) Then 
    m.Result = MA_NOACTIVATE 
Else 
    MyBase.WndProc(m) 
End If 

Maintenant, le défi est d'adopter ce à votre idée (un processus distinct et formulaire? ou un panneau avec des boutons?). OTOS MS fournit un ensemble d'API SDK clavier personnalisé pour écrire des claviers logiciels personnalisés pour Windows Mobile (c/C++).

+0

C'est une bonne référence, merci. Cependant, je n'arrive pas à trouver OTOS MS, qu'est-ce que cela signifie? Je suis lié à C# pour le développement pour certaines raisons, mais je voudrais toujours vérifier. – Ytan

+0

MS est l'abréviation de Microsoft et l'API et l'exemple dont je parle est le panneau de saisie du logiciel dvorak: http://msdn.microsoft.com/en-us/library/bb158734.aspx – josef

2

Si vous n'avez pas peur de passer au côté natif, vous pouvez envisager d'implémenter un panneau de saisie logicielle (SIP). Il se comporte de la manière que vous décrivez et peut être utilisé par n'importe quelle application exécutée sur l'appareil. Cette documentation est pour Compact 2013, mais il est également valable pour les versions précédentes (vous pouvez trouver des versions spécifiques à libération sur MSDN, mais ils ont été assez bons en les cachant): http://msdn.microsoft.com/en-us/library/ee500563.aspx

+0

Il existe un contrôle SIP dans WinCE de mon appareil, mais la taille est trop petite. J'ai cherché la possibilité de redimensionner le SIP, et il semble que SetImInfo contrôle la disposition du SIP, donc en invoquant cette méthode, je peux changer la taille de celui-ci dans mon application? Corrigez-moi si je me trompe, merci. – Ytan

+0

Valter recommande de créer un nouveau SIP plus grand répondant à vos besoins, sans modifier celui qui existe. – ctacke

+0

Ah ... je vois. Je suis toujours à la recherche de plusieurs alternatives, car il y a des limites (dans mon entreprise) qui m'empêchent de me développer à ma manière.J'ai examiné ma question dans ce post répondu, mais je pense que les autres suggestions données servent de bon exemple pour le développement de clavier personnalisé pour l'application WinCE, en particulier sur l'ancienne version. – Ytan

Questions connexes