2016-10-26 17 views
-1

フォーム2の特定のタグで識別されるボタンがいくつかあります。私はこれを行うにはどうすればよい、私が試した:フォームのプロパティを別のフォームから変更するにはどうすればいいですか?

foreach (Button but in Bridge.Form3) 
{ 
    if (but.Tag == tagcheck) 
    { 
     but.BackgroundImage = Properties.Resources.inactive; 
    } 
} 

私のプロジェクトの名前は橋で、私が欲しい画像が非アクティブという名前の私のリソースです。私は、下のテキストでBridge.Form3が

私は、試したことのエラーを取得し、この:オブジェクト参照が非静的フィールド、メソッド、またはプロパティのために必要とされる:私はエラーメッセージが表示されました

foreach (Control ctrl in Form3.Controls) 
{ 
    if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck) 
    { 
     ((Button)ctrl).BackgroundImage = Properties.Resources.inactive; 
    } 
} 

フォーム2は既にインスタンス化されています。

+0

エラーメッセージを共有するのに役立たないと思わないかセージ? PSフォームの 'Controls'プロパティを' foreach'にしたいと思います。フォーム自体ではありません。 –

+0

Form2が後でインスタンス化される場合、Form3を変数として渡してそこから変更することができます –

+0

どちらの場合も、オブジェクトにアクセスするためにオブジェクトを使用しないクラス名のみを使用しています。これは静的クラス。 したがって、任意のクラスのメンバーにアクセスするには、そのクラスを静的にするか、そのクラスのオブジェクトを作成する必要があります。 –

答えて

0

はこれを試してください:あなたは、ターゲットフォームを初期化する必要がある場合

の1-:

//You have to fill this variable (e.g. in constructor) with a reference to the object of you form 
public Form3 refF3;  

public void test() { 
    foreach (Control ctrl in refF3.Controls) { 
      if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck) { 
       ((Button)ctrl).BackgroundImage = Properties.Resources.inactive; 
      { 
     } 
} 
+0

私は、エラーメッセージが表示されます:非静的なフィールド、メソッド、またはプロパティのオブジェクト参照が必要です –

+0

ああ、misread youe投稿とthougt Bridge.Form3は参考になります...あなたは 'Bridge.Form3'をあなたのオブジェクトへの参照3 – FatTony

+0

どうすればいいのですか?インスタンスの名前はfm1 –

0

は、ここでは異なる形で位置制御のオブジェクト参照を取得する二つの方法だ

2-ターゲットフォームがすでに開いている場合

 Control.ControlCollection f3_ctrls; 

     //Case 1 
     Form3 f3 = new Form3();    
     f3.Show(); 
     f3_ctrls = f3.Controls; 

     //Case 2 
     f3_ctrls = (Application.OpenForms["Form3"]).Controls; 

     foreach (Control ctrl in f3_ctrls) 
     { 
      if ((ctrl is Button) && ctrl.Tag.Equals("myTag")) 
      { 
       ctrl.BackColor = Color.White; 
      } 
     } 
+0

1つの問題は、動的に作成されるため、私は自分のボタンの名前を知らない、私はそのTagプロパティの情報しか持っていない。 –

+0

@EdwardSnowden – Innat3

+0

実際、私はこれが彼の問題の解決策だとは思わない。私は彼がすでにForm3のオブジェクトを持っていると思うので、ボタンのプロパティを変更したいが、オブジェクトに慣れていないので、フォーム3のインスタンスにアクセスする方法はわからない。 – FatTony

関連する問題