WPF comment créer une zone de texte dynamiquement et trouver la zone de texte sur un clic de bouton?
Je suis entrain de créer un TextBox
et un Button
dynamiquement à l'aide du code suivant:
Button btnClickMe = new Button();
btnClickMe.Content = "Click Me";
btnClickMe.Name = "btnClickMe";
btnClickMe.Click += new RoutedEventHandler(this.CallMeClick);
someStackPanel.Childern.Add(btnClickMe);
TextBox txtNumber = new TextBox();
txtNumber.Name = "txtNumber";
txtNumber.Text = "1776";
someStackPanel.Childern.Add(txtNumber);
- Je brancher à un événement click à la Click Me
bouton. Cliquez sur le bouton me même est tiré correctement. Cependant, je ne trouve pas le TextBox
je suis entré de façon dynamique.
Voici mon sur-moi de l'événement:
protected void ClickMeClick(object sender, RoutedEventArgs e)
{
//Find the phone number
TextBox txtNumber = this.someStackPanel.FindName("txtNumber") as TextBox;
if (txtNumber != null)
{
string message = string.Format("The number is {0}", txtNumber.Text);
MessageBox.Show(message);
}
else
{
MessageBox.Show("Textbox is null");
}
}
Comment puis-je trouver les TextBox
txtNumber
?
source d'informationauteur David Basarab
Vous devez vous connecter pour publier un commentaire.
Josh G eu l'idée fixe de ce code: utilisation RegisterName().
Trois avantages ici:
Code complet.
Une autre méthode consiste à définir les associés
TextBox
commeButton Tag
quand instanciating.De cette façon, vous pouvez le récupérer en arrière dans le gestionnaire d'événements.
Vous pouvez obtenir votre original cliquez sur gestionnaire de travailler en inscrivant le nom de la zone de texte:
Cela vous permettra ensuite d'appeler FindName sur le StackPanel et de trouver la zone de texte.
Si vous voulez faire une recherche approfondie par le biais de l'arbre visuel des contrôles, vous pouvez utiliser le VisualTreeHelper classe.
Utiliser le code suivant pour itérer sur tous les visuels des enfants d'un contrôle:
Si vous voulez la recherche vers le bas dans l'arbre, que vous voulez effectuer cette boucle récursive, comme suit:
Est-il de toute façon, vous pouvez prendre le contrôle de zone de texte d'un champ dans votre classe au lieu d'une variable à l'intérieur de votre générateur de méthode