WPF Textbox et Bouton
Résolu
Theolit
Messages postés
41
Statut
Membre
-
Theolit Messages postés 41 Statut Membre -
Theolit Messages postés 41 Statut Membre -
Bonjour à tous, ✌
Mon objectif est d'avoir une application WPF contenant plusieurs textbox et deux bouton(New et Test).
Actuellement quand je clique sur New, le curseur se met automatiquement dans la première TextBox. Quand je clique sur la touche "Entrée " le curseur va automatiquement sur le prochain TxtBox:
CC @Whismeril
Je souhaiterais en cliquant sur le bouton test, qu'un texte "test" s'affiche dans la Txtbox actuellement sélectionné et quant je clique sur "Entrée" , il faut que ça continu à passer à la TxtBox suivante.
Je ne sais pas si j'ai été très clair, si quelqu'un a une idée *Emoji pensif*
Merci d'avance
Mon objectif est d'avoir une application WPF contenant plusieurs textbox et deux bouton(New et Test).
Actuellement quand je clique sur New, le curseur se met automatiquement dans la première TextBox. Quand je clique sur la touche "Entrée " le curseur va automatiquement sur le prochain TxtBox:
if (e.Key == System.Windows.Input.Key.Enter) { TextBox textBox = sender as TextBox; //on caste sender en textbox if (textBox == null)//si en fait sender n'était pas une textbox on sort return; List<TextBox> textBoxes = Grid.Children.OfType<TextBox>().ToList();//la liste de tous les textbox actuels int index = textBoxes.IndexOf(textBox);//index du textbox en cours dans la liste if (++index == textBoxes.Count)//si en ajoutant 1, on atteint un index trop grand, on remet à zéro index = 0; textBoxes[index].Focus(); }
CC @Whismeril
Je souhaiterais en cliquant sur le bouton test, qu'un texte "test" s'affiche dans la Txtbox actuellement sélectionné et quant je clique sur "Entrée" , il faut que ça continu à passer à la TxtBox suivante.
Je ne sais pas si j'ai été très clair, si quelqu'un a une idée *Emoji pensif*
Merci d'avance
A voir également:
- WPF Textbox et Bouton
- Diagnostic bouton photo - Accueil - Outils
- Bouton on/off comment savoir ✓ - Forum Matériel & Système
- Symbole arrêt marche - Forum Word
- Réinitialiser chromecast sans bouton - Guide
- Bouton reinitialisation pc - Guide
4 réponses
Bonjour
Est ce que le nombre de textbox est fixe, ou sont-elles ajoutées dynamiquement?
Est ce que le nombre de textbox est fixe, ou sont-elles ajoutées dynamiquement?
Theolit
Messages postés
41
Statut
Membre
Oui le nombre est fixe mais je voudrais éviter de faire un if avec chaque TxtBox
Ok
alors on va modifié le code que je t'ai donné hier.
Cependant, ce que je vais te montrer là va à l'encontre de la liaison de données (Binding) qui est l'un des gros points forts de WPF.
alors on va modifié le code que je t'ai donné hier.
Cependant, ce que je vais te montrer là va à l'encontre de la liaison de données (Binding) qui est l'un des gros points forts de WPF.
On ne peut pas utiliser la propriété Focused, car en cliquant sur le bouton, c'est lui qui a le focus.
Je me sers donc de l'index, que je mémorise
Je me sers donc de l'index, que je mémorise
List<TextBox> textBoxes;//la liste devient "globale" à la classe pour ne pas refaire n fois la même requête, et servir aux 2 interactions int indexTextBox;//idem pour l'index public MainWindow() { InitializeComponent(); textBoxes = leGrid.Children.OfType<TextBox>().OrderBy(t => Convert.ToInt32(t.Tag)).ToList(); } private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if(e.Key == System.Windows.Input.Key.Enter) { SetIndex(sender); if (++indexTextBox == textBoxes.Count)//si een ajoutant 1, on atteint un index trop grand, on remet à zéro indexTextBox = 0; textBoxes[indexTextBox].Focus(); } } private void SetIndex(object sender) { TextBox textBox = sender as TextBox; //on caste sender en textbox if (textBox == null)//si en fait sender n'était pas une textbox on sort return; indexTextBox = textBoxes.IndexOf(textBox);//index du textbox en cours dans la liste } private void TextBox_GotFocus(object sender, RoutedEventArgs e) { SetIndex(sender);//au cas ou le focus soit parvenu autrement (souris ou Tab par exemple) } private void ButTest_Click(object sender, RoutedEventArgs e) { textBoxes[indexTextBox].Text = "Coucou"; }
<Grid x:Name="leGrid"> <TextBox HorizontalAlignment="Left" Height="23" Margin="445,69,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" KeyDown="TextBox_KeyDown" Tag="1" GotFocus="TextBox_GotFocus"/> <TextBox HorizontalAlignment="Left" Height="23" Margin="445,125,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" KeyDown="TextBox_KeyDown" Tag="3" GotFocus="TextBox_GotFocus"/> <TextBox HorizontalAlignment="Left" Height="23" Margin="445,153,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" KeyDown="TextBox_KeyDown" Tag="4" GotFocus="TextBox_GotFocus"/> <TextBox HorizontalAlignment="Left" Height="23" Margin="445,97,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" KeyDown="TextBox_KeyDown" Tag="2" GotFocus="TextBox_GotFocus"/> <Button Content="Test" HorizontalAlignment="Left" Margin="471,208,0,0" VerticalAlignment="Top" Width="75" Click="ButTest_Click"/>