J'ai une application WPF avec un Grid
où il y a plusieurs TextBox
s. Comment puis-je faire chaque TextBox.Text = null;
avec un clic sur le bouton?Effacer le texte dans plusieurs TextBox à la fois
Répondre
pour cette solution:
private void button1_Click(object sender, RoutedEventArgs e)
{
foreach (UIElement control in myGrid.Children)
{
if (control.GetType() == typeof(TextBox))
{
TextBox txtBox = (TextBox)control;
txtBox.Text = null;
}
}
}
Quelque chose comme ça marcherait:
private void Button_Click(object sender, RoutedEventArgs e) {
foreach (UIElement element in this.grid.Children) {
TextBox textBox = element as TextBox;
if (textBox == null)
continue;
textBox.Text = null;
}
}
Vous pouvez également utiliser la méthode Linq, 'OfType':' forech (TextBox tb dans grid.Children.OfType
Le code Tom et CodeNaked a donné fera ce que vous voulez, mais je généralement conseils contre cette logique.
La grille est là pour vous aider à organiser vos commandes visuellement, il est un conteneur de présentation . En aucun cas, il devrait être utilisé pour organiser vos contrôles logiquement, dans les coulisses.
Comme je l'ai dit, cependant, c'est un conseil assez général. Votre programme pourrait bénéficier de l'autre approche.
+1 Je suis entièrement d'accord avec vous, mais je voulais quand même répondre à la question –
Il existe plusieurs approches à ce problème.
La première est une approche hybride dans laquelle les données sont transférées vers vos zones de texte via des liaisons et un clic sur un bouton supprime les données.
Pour commencer, vous devez vous assurer que vos classes de données à mettre en œuvre INotifyPropertyChanged
:
public class Foo : INotifyPropertyChanged
{
private string bar;
private string baz;
public string Bar
{
get { return this.bar; }
set
{
this.bar = value;
// this is where the magic of bindings happens
this.OnPropertyChanged("Bar");
}
}
// rest of the class here...
}
Référencé dans votre XAML grâce à des liaisons:
<Grid>
<Grid.RowDefinitions>
<!-- ... -->
</Grid.RowDefinitions>
<TextBox Grid.Row="0"
Text="{Binding Bar}" />
<TextBox Grid.Row="1"
Text="{Binding Baz}" />
<!-- A more complete example would use Button.Command -->
<Button Grid.Row="2"
Content="CLEAR"
Click="ClearButton_Click" />
Enfin, ces liaisons sont câblés à l'aide du DataContext
et un gestionnaire d'événement routé dans votre code-behind Window
s:
public Window1()
{
this.InitializeComponent();
// sets up the DataContext used by the bindings
this.Clear();
}
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
this.Clear();
}
private void Clear()
{
this.DataContext = new Foo();
}
Cette approche vous permettra de mieux gérer les interfaces utilisateur plus complexes.
Un dernier effort serait:
/// <summary>This is a bad choice.</summary>
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
// assumes the Grid is named MyGrid
foreach (var textBox in this.MyGrid.Children.OfType<TextBox>())
{
textBox.Text = null;
}
}
- 1. effacer plusieurs champs de texte à la fois
- 2. SDK iPhone Effacer plusieurs champs de texte à la fois
- 3. Comment effacer un TextBox?
- 4. Déclencheur TextBox pour effacer le texte en utilisant un style
- 5. Onfocus de textbox effacer autre zone de texte dans la même rangée dans le rasoir
- 6. Comment effacer un TextBox?
- 7. Utilisation de Css pour effacer TextBox Texte/valeur
- 8. Comment effacer le texte TextBox et la valeur AJAX CalendarExtender en utilisant Javascript?
- 9. Modifier le texte plusieurs fois avec jQuery
- 10. Effacer le texte sélectionné ComboBox
- 11. Effacer le texte de l'url
- 12. textbox remplacer le texte
- 13. texte Ajouter Textbox nouvelle chaîne dans la liste chaque fois que le bouton est pressé
- 14. Mise au point multiple à la fois (textbox et datagridview)
- 15. Effacer le texte TextField JavaScript
- 16. Le son est joué plusieurs fois à la fois
- 17. Effacer le texte de l'espace réservé UITextField à la pression
- 18. texte textbox validate et augmenter l'index de tabulation une fois
- 19. effacer le texte onclick - textfield
- 20. Comment effacer le texte dans edittext
- 21. Effacer le formulaire formulaire une fois soumis
- 22. Modifier le texte sélectionné BackColor dans TextBox
- 23. insérer le texte à la sélection Textbox utiliser Javascript
- 24. TextBox dans la colonne dynamique n'enveloppez texte
- 25. Limiter le texte à la largeur de TextBox
- 26. Plusieurs vignettes à la fois dans CodeIgniter
- 27. Liaison de plusieurs TextBox à une structure dans WPF
- 28. Comment modifier le texte à insérer dans TextBox?
- 29. Comment effacer le texte de la barre d'état dans ExtJS?
- 30. Modifier le codage du texte pour plusieurs fichiers à la fois dans Eclipse
Étrange façon de déterminer le type. Que faire si j'ai un type appelé 'MyNamespace.TextBox'? :-) – CodeNaked
Ok, donc le dernier commentaire serait de suivre [CA1800] (http://msdn.microsoft.com/en-us/library/ms182271.aspx) même si votre code est un peu diff. – CodeNaked
Une meilleure façon de le faire serait d'utiliser la méthode Linq 'OfType':' foreach (TextBox tb dans myGrid.Children.OfType()) {} '. Ou, utilisez l'opérateur 'as ', au lieu de comparer directement les types, car il prend en charge l'héritage:' var controlAsTextBox = control as TextBox; if (controlAsTextBox! = null) {} '. –