WPF Textbox et Bouton
Résolu
Theolit
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
-
Theolit Messages postés 39 Date d'inscription Statut Membre Dernière intervention -
Theolit Messages postés 39 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- WPF Textbox et Bouton
- Bouton reinitialisation pc - Guide
- Diagnostic bouton photo - Accueil - Outils
- Bouton home clavier ✓ - Forum PC portable
- Bouton on/off comment savoir - Forum Word
- Réinitialiser chromecast sans bouton - 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
39
Date d'inscription
Statut
Membre
Dernière intervention
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"/>