2013-08-01 6 views
-4

J'ai un bouton qui, lorsqu'il est pressé, envoie actuellement des messages à une boîte de message. Ce n'est pas très propre donc j'ai créé un nouveau formulaire et placé une zone de texte là-bas. Alors que le 2ème formulaire récupère les données il les présente dans une autre boîte à message plutôt que dans la boîte de texte comme prévu. L'aide est appréciée.Transférer des données dans un formulaire séparé

Form2

public Form2(string strTextBox) 
    { 
     InitializeComponent(); 
     textBox1.Text = strTextBox; 
    } 

Formulaire 1

private void SaveButton_Click(object sender, EventArgs e) 
{ 
      foreach (string error in errorSet) 
      { 
       Form2 frm = new Form2(error); 
       frm.Show(); 

      } 
} 

Il y a un peu plus logique dans le Button_Click si elle semble un peu étrange mais son assez redondant pour le problème im avoir.

Merci

+2

Quelle est votre question? – ganders

+3

Vous voulez vraiment qu'il apparaisse un nouveau 'Form2' pour chaque message? C'est cliquer, cliquer, cliquer ... pour l'utilisateur. – DonBoitnott

+0

Ne faites pas cela. Les boîtes de message sont là pour montrer des messages. Si vous souhaitez modifier l'image ou l'arrière-plan de la boîte de dialogue système/défaut, vous pouvez remplacer/créer les vôtres. Je ne suis pas sûr de l'erreur exacte, car vous n'avez pas posé de question ... – MoonKnight

Répondre

1

Vous devez boucler sur votre collection d'erreurs et de les stocker dans un StringBuilder, puis, montrer le Form2 qu'une seule fois en dehors de la boucle (si au moins une erreur).

N'oubliez pas de créer votre zone de texte MultiLine = true, donnez-lui une hauteur suffisante et une barre de défilement verticale.

private void SaveButton_Click(object sender, EventArgs e) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (string error in errorSet) 
     sb.AppendLine(error); 

    if(sb.Lenght> 0) 
    { 
     Form2 frm = new Form2(sb.ToString()); 
     frm.Show(); 
    } 
} 
+0

Ça marche bien, mais pourquoi crée-t-il tant de textbox et pas seulement un? – user2637869

+0

Votre code précédent crée une nouvelle instance de Form2 à chaque boucle. Donc, si vous avez 10 erreurs, votre code crée 10 formulaires ('Form2 frm = new Form2()') et chaque formulaire a sa propre zone de texte où un seul message d'erreur sera imprimé – Steve

Questions connexes