Considérez un XAML TextBox dans Win Phone 7.
<TextBox x:Name="UserNumber" />
Le but ici est que lorsque l'utilisateur appuie sur le bouton Enter
du clavier à l'écran, cela déclenche une logique pour actualiser le contenu à l'écran.
J'aimerais qu'un événement soit déclenché spécifiquement pour Enter
. Est-ce possible?
Enter
sur chaque pression de touche? c'est-à-dire un analogue de ASCII 13?Une approche simple pour cela dans une zone de texte est
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
Debug.WriteLine("Enter");
}
}
Vous chercherez à implémenter l'événement KeyDown spécifique à cette zone de texte et à vérifier KeyEventArgs pour la touche réelle enfoncée (et si elle correspond à Key.Enter, faites quelque chose)
<TextBox Name="Box" InputScope="Text" KeyDown="Box_KeyDown"></TextBox>
private void Box_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
{
//Do something
}
}
Juste une note que dans la version bêta de l'émulateur WP7, bien que l'utilisation du clavier logiciel détecte correctement la touche Entrée, si vous utilisez le clavier matériel (activé en appuyant sur Pause/Pause), la touche Entrée semble venir à travers comme Key.Unknown - ou du moins, il le faisait sur mon ordinateur ...
Si vous utilisez l'émulateur, vous pouvez également faire quelque chose comme ça pour détecter la touche Entrée de votre clavier physique.
private void textBox1_KeyUp(object sender, KeyEventArgs e) {
var isEnterKey =
e.Key == System.Windows.Input.Key.Enter ||
e.PlatformKeyCode == 10;
if (isEnterKey) {
// ...
}
}
A été confronté au même problème; les exemples ci-dessus ne donnent que des détails sur la façon de piéger l'événement de pression du clavier (qui répond à la question), mais pour désactiver le clavier, cliquer ou entrer, j'ai juste le focus défini sur un autre contrôle.
Ce qui entraînera la désactivation du clavier.
private void txtCodeText_KeyDown(object sender, KeyEventArgs e)
{
if(e.Key.Equals(Key.Enter))
{
//setting the focus to different control
btnTransmit.Focus();
}
}