2010-11-11 24 views
0

Salut comment puis-je modifier la valeur de texte de zone de texte dans la fenêtre parent de fenêtre enfant ..Comment accéder et de la valeur de changement de contrôle de la fenêtre parent de fenêtre enfant en C#

-à-dire je fenêtre parent ont textbox1 et le bouton et la fenêtre enfant a textbox2 et le bouton. Je dois mettre à jour la valeur de textbox1 lorsque j'entre du texte dans la zone de texte2 de la fenêtre enfant.

je l'ai fait une fonction simple de faire cela logiquement son correct mais ca marche pas je ne sais pas pourquoi ..

parent.cs

namespace digdog 
{ 
    public partial class parent : Form 
    { 
     public parent() 
     { 
      InitializeComponent(); 
     } 

     public void changeText(string text) 
     { 
      textbox1.Text = text; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      //Display modal dialog 
      child myform = new child(); 
      myform.ShowDialog(); 

     } 

    } 
} 

Child.cs

namespace digdog 
{ 
    public partial class child : Form 
    { 

     public child() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
     parent mytexts = new parent(); 
     mytexts.changeText(textbox2.Text); 
     } 
    } 
} 

toutes les idées seront appréciées merci d'avance

+0

Dupliquer de votre question il y a pas encore une heure: http://stackoverflow.com/questions/4160143/accessing-control-in-parent-window-from-child-window-in-c –

+0

Je l'ai simplifié donc je peux avoir plus de réponses. Avez-vous un problème avec ça? – SolidSnake

+1

@RobinVanPersi: il est préférable de modifier votre question au lieu de l'afficher deux fois. –

Répondre

3

Vous êtes c créer une autre fenêtre 'parent' (qui n'est pas visible) et changer son texte. Le parent «réel» doit être consulté par l'enfant. Vous pouvez le faire via une propriété sur l'enfant qui est définie dans le parent button1_click.

par exemple.

en classe enfant

public parent ParentWindow {get;set;} 

dans button1_click parent

child myform = new child(); 
child.ParentWindow = this; 
m.ShowDialog(); 

chez l'enfant button1_click

ParentWindow.changeText(textbox2.Text) 
+0

travaillé comme charme .. merci: D – SolidSnake

+1

@ ermac2014 et @grantnz; oui cela fonctionne, mais vous n'avez pas besoin d'implémenter 'ParentWindow' en tant que propriété de la forme" enfant "; cette propriété existe déjà dans la classe 'Form' de .NET, comme vous pouvez le voir dans ma réponse. – BeemerGuy

+0

Bon point. J'aurais dû penser à cela. – grantnz

3

Ne pas créer un nouveau parent. Référence le parent du formulaire lui-même.

private void button1_Click(object sender, EventArgs e) 
    { 
     parent mytexts = this.Parent as parent; 
     mytexts.changeText(textbox2.Text); 
    } 

Et voici comment vous créez d'abord l'enfant:

private void button1_Click(object sender, EventArgs e) 
    { 
     //Display modal dialog 
     child myform = new child(); 
     myform.ShowDialog(this); // make this form the parent 
    } 
3

ou simple: dans le ParentWindow

ChildWindow child = new ChildWindow(); 
child.Owner = this; 
child.ShowDialog(); 

dans la fenêtre de l'enfant

this.Owner.Title = "Change"; 

cette fonctionne assez cool