Je dispose de quelques zones de texte sur mon interface utilisateur pour afficher le clavier mobile lorsque le contrôle est actif, puis je m'en vais. Remarque: pour ce programme particulier, il s'agit d'un grand écran qui ne possède pas de clavier physique sur l'appareil..net cf TextBox qui affiche le clavier en surbrillance
Répondre
Ajouter un InputPanel à votre formulaire, brancher les événements GotFocus et LostFocus de la zone de texte et afficher/masquer le panneau d'entrée dans les gestionnaires d'événements:
private void TextBox_GotFocus(object sender, EventArgs e)
{
SetKeyboardVisible(true);
}
private void TextBox_LostFocus(object sender, EventArgs e)
{
SetKeyboardVisible(false);
}
protected void SetKeyboardVisible(bool isVisible)
{
inputPanel.Enabled = isVisible;
}
Mise à jour
En réponse à la demande d'exhaustivité de ctacke; Voici un exemple de code pour connecter les gestionnaires d'événements. Normalement, j'utiliserais le concepteur pour cela (sélectionnez la zone de texte, affichez la grille des propriétés, passez à la liste des événements et configurez les gestionnaires d'environnement pour GotFocus
et LostFocus
), mais si l'interface utilisateur contient plus de quelques zones de texte, vous pouvez souhaiter pour l'avoir plus automatisé.
La classe suivante expose deux méthodes statiques, AttachGotLostFocusEvents et DetachGotLostFocusEvents; ils acceptent un ControlCollection et deux gestionnaires d'événements.
internal static class ControlHelper
{
private static bool IsGotLostFocusControl(Control ctl)
{
return ctl.GetType().IsSubclassOf(typeof(TextBoxBase)) ||
(ctl.GetType() == typeof(ComboBox) && (ctl as ComboBox).DropDownStyle == ComboBoxStyle.DropDown);
}
public static void AttachGotLostFocusEvents(
System.Windows.Forms.Control.ControlCollection controls,
EventHandler gotFocusEventHandler,
EventHandler lostFocusEventHandler)
{
foreach (Control ctl in controls)
{
if (IsGotLostFocusControl(ctl))
{
ctl.GotFocus += gotFocusEventHandler;
ctl.LostFocus += lostFocusEventHandler ;
}
else if (ctl.Controls.Count > 0)
{
AttachGotLostFocusEvents(ctl.Controls, gotFocusEventHandler, lostFocusEventHandler);
}
}
}
public static void DetachGotLostFocusEvents(
System.Windows.Forms.Control.ControlCollection controls,
EventHandler gotFocusEventHandler,
EventHandler lostFocusEventHandler)
{
foreach (Control ctl in controls)
{
if (IsGotLostFocusControl(ctl))
{
ctl.GotFocus -= gotFocusEventHandler;
ctl.LostFocus -= lostFocusEventHandler;
}
else if (ctl.Controls.Count > 0)
{
DetachGotLostFocusEvents(ctl.Controls, gotFocusEventHandler, lostFocusEventHandler);
}
}
}
}
Exemple d'utilisation sous une forme:
private void Form_Load(object sender, EventArgs e)
{
ControlHelper.AttachGotLostFocusEvents(
this.Controls,
new EventHandler(EditControl_GotFocus),
new EventHandler(EditControl_LostFocus));
}
private void Form_Closed(object sender, EventArgs e)
{
ControlHelper.DetachGotLostFocusEvents(
this.Controls,
new EventHandler(EditControl_GotFocus),
new EventHandler(EditControl_LostFocus));
}
private void EditControl_GotFocus(object sender, EventArgs e)
{
ShowKeyboard();
}
private void EditControl_LostFocus(object sender, EventArgs e)
{
HideKeyboard();
}
Utilisez le InputPanel class. Enable lorsque vous obtenez le focus, désactivez-le lorsque vous perdez le focus.
- 1. Appeler automatiquement le clavier numérique lors de l'édition de la zone de texte (.NET CF)
- 2. iphone empêcher l'autorotation, mais seulement lorsque le clavier affiche
- 3. .NET CF, structure Interop & GPS_DEVICE
- 4. C#, textbox, .NET
- 5. Localisation NET CF avec l'orientation consciente
- 6. OpenNetCF SDF vs .Net CF 3.5
- 7. Mapping clavier dans .NET
- 8. invoquer thread-safe sur NET CF
- 9. doigt lecteur d'impression et .net cf
- 10. C# .Net CF Form.Invoke augmenter ArgumentException
- 11. Qu'est-ce qui fait que le CLR affiche des assertions?
- 12. HttpWebRequest et SSL dans .NET CF 3.5
- 13. Android: Simple GridView qui affiche le texte dans les grilles
- 14. onglet Mettez en surbrillance dans le menu
- 15. Clavier à l'écran .NET Kiosk
- 16. OS X Obtenez le texte en surbrillance
- 17. Mettre en surbrillance du texte dans un contrôle Webbrowser .net
- 18. Comment cacher le clavier en utilisant TableView dans Iphone?
- 19. Mettez en surbrillance NSToolbarItems
- 20. Comment obtenir le nom d'utilisateur du PDA/Windows Mobile en utilisant .Net CF 3.5?
- 21. événements de clavier dans .NET
- 22. WPF Maintenir le focus du clavier
- 23. Nouveau projet mobile Windows - LINQ aux données dans .NET CF?
- 24. .NET + COM modifié le comportement de routage du clavier
- 25. Mise à jour automatique de l'application .net CF
- 26. Comment identifier le contrôle dans lequel je suis (vb.net cf)
- 27. Comment configurer Visual Studio pour travailler avec .net 3.5 CF?
- 28. Puis-je obtenir la fonctionnalité de MsgWaitForMultipleObjects dans .Net CF?
- 29. Modification du mot de passe utilisateur via l'application .net CF
- 30. Modifier le clavier par programme en Dvorak
Je viens de lire cet article: http://msdn.microsoft.com/en-us/library/ms838220.aspx, ils recommandent aussi attraper l'événement Form_Closing. –
Bonne information sur la chose Form_Closing là; merci :) –
Pour être complet, vous devriez probablement montrer le câblage des événements aussi. – ctacke