2016-12-28 2 views
0

Ich habe 3 Formulare: form1 (die ich meine Liste von form3 verwenden möchte, in denen ich Liste erstellen und Dinge hinzufügen), form2 (die eine Schaltfläche enthält, um zurück zu form1 und a Taste, um form3 zu gehen und Werte in die Liste erhaltenPass-Liste von Form3 zu Form1

ich habe versucht, die folgende Klasse zu schaffen.

public class ListArticle 
    { 
     public List<string> Clothes { get; private set; } 
     public List<string> Colors { get; private set; } 

     public ListArticle() 
     { 
      Clothes = new List<string>(); 
      Colors = new List<string>(); 
     } 
    } 

und dann erklären Hinzufügen Dinge in der Liste von form3 wie diese versuchen:

// Dies ist die Erklärung

public ListArticle _articles = new ListArticle(); 

    public ListArticle Articles 
    { 
     get 
     { 
      return _articles; 
     } 
     set 
     { 
      _articles = value; 
     } 
    } 

Dies ist, wie ich hinzufügen:

_articles.Clothes.Add("T-shirt " + tshirt_number.ToString()); 
_articles.Colors.Add(closestColor2(clist, color)); 

und das ist, wie ich die Werte zu bekommen versuchen:

wenn ich form3 schließen

ich dies tun:

Form2 frm = new Form2(); 
frm.Show(); 
Articles = _articles; 
this.Hide(); 

in form2 Ich mache nichts ..

und in form1 habe ich versucht, es so zu tun:

// Deklaration

public ListArticle Articles; 

public ListArticle _articles 
{ 
    get 
    { 
    return Articles; 
    } 
    set 
    { 
    Articles = value; 
    } 
} 

// und das ist, wie ich versuchte, es zu tun, aber es gibt null zurück, jedes Mal.

private void button3_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      Form3 f = new Form3(); 

      f.Articles = Articles; 

      foreach (string c in Articles.Clothes) 
      { 
       MessageBox.Show(c); 
      } 
     } 
     catch 
     { 
      MessageBox.Show("Articles is null."); 
     } 

    } 
+1

[Interaktion zwischen Formularen - So ändern Sie ein Steuerelement eines Formulars aus einem anderen Formular?] (Https://stackoverflow.com/questions/38768737/interaction-between-forms-how-to-change-a-control- von einer Form-von-einer anderen-Form) –

+0

Sie haben gestern eine ähnliche Frage gestellt, die noch offen ist. Sie müssen mehr darüber lernen, wie Sie zwischen den Formularen kommunizieren können. Nehmen Sie sich also etwas Zeit, um den verlinkten Beitrag zu lesen. –

+0

@RezaAghaei Ich weiß, aber ich fühlte mich, als würde ich zu wenig Informationen darüber geben, was ich wirklich fragen wollte, und eine vollständige Frage mit Antworten neu zu verfassen ist schlecht. –

Antwort

0

Wenn Sie die Artikel zwischen allen Formen der Lage sein, teilen Sie die Kleidung und Farben Sammlung statisch machen könnte:

public class ListArticle 
{ 
    public static List<string> Clothes { get; private set; } 
    public static List<string> Colors { get; private set; } 

    static ListArticle() 
    { 
     Clothes = new List<string>(); 
     Colors = new List<string>(); 
    } 
} 

Anschließend können Sie Artikel hinzufügen, bilden eine Form wie folgt aus:

ListArticle.Clothes.Add("T-shirt " + tshirt_number.ToString()); 
ListArticle.Colors.Add(closestColor2(clist, color)); 

... und abrufen von Nachrichten aus einer anderen Form wie folgt aus:

private void button3_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     foreach (string c in ListArticle.Clothes) 
     { 
      MessageBox.Show(c); 
     } 
    } 
    catch 
    { 
     MessageBox.Show("Articles is null."); 
    } 
} 

Mit diesem Ansatz müssen Sie keine zusätzlichen "Artikel" -Eigenschaften in einem der Formulare erstellen. Sie greifen einfach von allen Formularen auf dieselben statischen Sammlungen zu.

Verwandte Themen