Je voudrais mettre à jour un TextBox
à partir d'un formulaire arbitraire. Pourriez-vous suggérer un moyen de le faire?Comment mettre à jour un TextBox à partir d'un formulaire autre que son parent?
Répondre
Fondamentalement, de la même manière que vous le feriez avec un autre objet. Vous devez avoir une référence à l'autre formulaire, et si c'est un type différent, il doit exposer la zone de texte qui vous intéresse en tant que propriété, ou avoir une méthode pour définir le texte. Ainsi, par exemple, vous pourriez avoir:
public class FirstForm : Form
{
private TextBox nameInput;
public TextBox NameInput { get { return nameInput; } }
...
}
public class SecondForm : Form
{
private TextBox otherNameInput;
private FirstForm firstForm;
public void CopyValue()
{
firstForm.NameInput.Text = otherNameInput.Text;
}
}
Ou mettre la responsabilité textbox dans la première forme:
public class FirstForm : Form
{
private TextBox nameInput;
public string Name
{
get { return nameInput.Text; }
set { nameInput.Text = value; }
}
...
}
public class SecondForm : Form
{
private TextBox otherNameInput;
private FirstForm firstForm;
public void CopyValue()
{
firstForm.Name = otherNameInput.Text;
}
}
Il existe plusieurs autres façons de la peau du chat, mais ce sont les plus communs. La façon dont vous obtenez la référence au FirstForm
dans le SecondForm
varie - il peut être transmis au constructeur pour SecondForm
, ou il peut être créé par SecondForm
lui-même. Cela dépendra du reste de votre interface utilisateur. Notez que cela suppose que les deux formulaires utilisent le même thread d'interface utilisateur. Il est possible (mais relativement rare) d'avoir des threads d'interface utilisateur différents pour différentes fenêtres, auquel cas vous devrez utiliser Control.Invoke
/BeginInvoke
.
Modifiez la classe et remplacez le constructeur du formulaire pour transmettre les données souhaitées. Dans le magasin du constructeur, le varialble est transmis, dans une variable membre.
Vous devriez suivre les conseils de Jon. L'autre façon peut-être quelque chose d'aussi sale que cela:
// Bad practice
foreach (var child in theOtherForm.Controls){
if(child.Name == '_otherControlName')
{
(child as TextBox).Text = _thisTextBox.text;
}
}
Vous devrez peut-être vérifier certains types et l'enfant de certains panneau contrôle aussi bien.
- 1. Mettre à jour un onglet à partir d'un autre onglet?
- 2. Mettre à jour RSS à partir d'un autre fichier XML?
- 3. Propagation d'événements d'un formulaire à un autre Formulaire en C#
- 4. Comment fermer un formulaire .Net à partir de son PreFilterMessage()?
- 5. Écrire dans un TextBox à partir d'un autre thread?
- 6. Parent enfant (Enregistrer, mettre à jour et supprimer)
- 7. Essayer de mettre à jour un formulaire fait une insertion!
- 8. comment mettre à jour la valeur d'un autre TSQL
- 9. C# Comment lier un formulaire enfant à un parent?
- 10. Comment mettre à jour un nœud XML?
- 11. Comment mettre à jour un Access DB à partir du Web?
- 12. Mise à jour de uitextView à partir d'un autre contrôleur
- 13. Écoute d'événements dans un formulaire principal à partir d'un autre formulaire en C#
- 14. Comment mettre à jour mysql?
- 15. Comment mettre à jour datagridview
- 16. comment obtenir usercontrol pour mettre à jour
- 17. Mettre à jour le parent Modèle sur la mise à jour de l'enfant
- 18. SSIS Mettre à jour les valeurs de table à partir d'une autre table
- 19. UserControl - textbox accès à l'intérieur UserControl dans un formulaire web
- 20. Mettre à jour la colonne d'une autre table - mySQL 3.5.2
- 21. Comment mettre à jour à Ruby 1.8.7
- 22. Comment forcer le navigateur à mettre à jour son URL de base
- 23. Comment mettre à jour le chemin MATLAB?
- 24. Comment insérer/supprimer/mettre à jour dans un arbre ordonné
- 25. Comment mettre à jour une table automatiquement?
- 26. mettre à jour un auto_now DateTimeField dans un modèle parent w/Django
- 27. Comment mettre à jour ce code
- 28. MySQL mettre à jour une ligne quand une autre change
- 29. Comment puis-je redimensionner un formulaire enfant lorsque son formulaire parent MDI est agrandi?
- 30. Comment mettre à jour un contrôle en dehors d'un dialogue?
ce code affiche la valeur de la zone de texte dans l'en-tête de la deuxième forme – ush
L'affichage est assez peu pertinent. Quel morceau de ma réponse trouvez-vous difficile à mettre en œuvre? –
Juste pour confirmer la meilleure pratique ici - si j'ai plusieurs POCO (je peux dire POCO? :) qui ont besoin de mettre à jour une boîte de texte dans un formulaire (par exemple résultats de progrès), disons que je dois passer une référence du formulaire chaque classe que je veux parler à la forme? – Vidar