2016-12-28 9 views
0

私は3つのフォームを持っています:form1(リストを作成して追加するform3からリストを使いたい)、form2(これはform1に戻るボタンを含んでいます。たForm3に移動し、リストに値を取得するためのボタンForm3からForm1へのパスリスト

私は以下のクラスを作成してみました:。その後、

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>(); 
     } 
    } 

と、このようなたForm3から一覧で物事を追加しようとして宣言します。

//これは宣言です

public ListArticle _articles = new ListArticle(); 

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

は、これは私が追加する方法である:

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

、これは私が値を取得しようとしています方法です:私は閉じ

たForm3

私はこれを行う:

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

(形式2)何もしません。

し、Form1に、私はこのようにそれを実行しようとしました:

//宣言

public ListArticle Articles; 

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

//これは、私はそれを実行しようとしましたが、それはnullを毎回返す方法です。

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

[フォーム間の相互作用 - フォームのコントロールを別のフォームから変更する方法](https://stackoverflow.com/questions/38768737/interaction-between-forms-how-to-change-a-control-別のフォームからのフォーム) –

+0

あなたはまだ開いている昨日同様の質問をしました。フォーム間でのやりとりの仕方についてもっと学ぶ必要があるので、リンクされた投稿を読む時間を割いてください。 –

+0

@RezaAghaei知っているけど、私が本当に尋ねたいと思っていたことについてあまり情報をあまり与えず、答えで完全な質問を作り直すのが悪いように感じました。 –

答えて

0

あなたが服や色のコレクションは、静的作ることができるすべての形態の間の記事を共有することができるようにしたい場合:

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>(); 
    } 
} 

あなたはその後、記事を追加することができますが、このような一つの形を形成しますこのような別のフォームから

ListArticle.Clothes.Add("T-shirt " + tshirt_number.ToString()); 
ListArticle.Colors.Add(closestColor2(clist, color)); 
...と取得の記事:

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

この方法を使用すると、どちらのフォームでも追加の「記事」プロパティを作成する必要はありません。すべてのフォームから同じ静的コレクションにアクセスするだけです。

関連する問題