2016-04-22 11 views
0

ifステートメントで使用する同じソリューション内で別のフォームにラベルテキストをプルしようとしています。しかし、それはフィールドからデータを引き出していないようです。私は、フォーム1のラベルテキストに基づいて、ラベルの背景の色を変更しようとしています。どんな助けも大歓迎です。 FORM IN 11つのフォームからデータにアクセスして別のフォームに移動する方法

public void button1_Click(object sender, EventArgs e) 
{ 
    form1 view = new form(); 
    view.Show(); 
    view.label1 = label1.Text.ToString(); 
} 

FORM IN 2:

public string label1 { get; set; } 

public void Display() 
{ 
    if (label1 == "1") 
    { 
     for (int i = 0; i < nWinnings.Length; i++) 
     { 
      Label label = new Label(); 
      label.BackColor = Color.Red; 
      ... 
     } 
    } 
    else 
    { 
     for (int i = 0; i < nWinnings.Length; i++) 
     { 
      Label label = new Label(); 
      label.BackColor = Color.Blue; 
      ... 
     } 
     } 
} 

がラベルにもっとありますが、ラベルは作業細かいマイナスの色の変化です。

答えて

1

これは間違っています:あなたはあなたのLabel新しいインスタンスを作成することはできません

Label label = new Label(); 

...それは最初Formの元Labelインスタンスへの絶対的に接続されていない、その上に任意のプロパティを変更元のものにも影響しません。


あなたは全体Labelへの参照を渡す必要があります:私はあなたが他のフォームにどのように行うのコントロールへの参照の周りを渡すくらい制限したい

// Form 1 

public void button1_Click(object sender, EventArgs e) 
{ 
    form1 view = new form(); 
    view.label1 = label1; 
    view.Show(); 
} 

// Form 2 

public Label label1 { get; set; } 

public void Display() 
{ 
    if (label1.Text == "1") 
    { 
     for (int i = 0; i < nWinnings.Length; i++) 
     { 
      label1.BackColor = Color.Red; 

      // ... etc, etc 

。私の経験では、あまりにも多くすると、コードがかなり濁ってしまいます。

+0

@Grant Winneyの説明をありがとうございます。私はこの変更を試み、 "NullReferenceExceptionが未処理"になっています。 – Jret

+0

どの行にありますか?ラベルへの参照を正しく渡していますか? –

+0

ifステートメント。私はそう信じていますが、私はC#の初心者です。何か基本的なものを見逃していた可能性があります。 – Jret

0

私が理解したことが正しい場合は、2つの書式があります。 FORM1 & FORM2。 FORM1にラベルコントロールLABEL1があります。このテキストを読んでFORM2に渡します。

FORM2には、背景色を変更したい別のラベルコントロールLABEL2があります。

FORM2に文字列変数を宣言できます。 FORM2に新しいコンストラクタを追加して文字列引数を受け入れ、この値を文字列変数に設定します。 FORM2 OnLoadでは、文字列変数の値を確認してから、 、if-elseループの LABEL2.BackColor = whateverColorを確認できます。

FORM1

でこのような何か
FORM2 newForm = new FORM2(LABEL1.Text); 
newForm.Show(); 

とFORM2

private label1String = String.Empty(); 

public FORM2(string arg) 
{ 
    ...Default Initialization Code... 
    label1String = arg; 
} 

private void ChangeLabel2Color() 
{ 
    if(label1String == "1") 
    { 
     LABEL2.BackColor = whateverColorYouNeed; 
    } 
    else 
    { 
     ...WHATEVER YOU NEED TO DO... 
    } 
} 

私は直接コードを書いたので、構文エラーがあるかもしれません。

関連する問題