2011-06-21 2 views
0

パネルを含むWindowsフォームアプリケーションを使用しています。クラスファイル内の特定のメソッドを呼び出してパネルのステータスを可視に変更すると、そのパネルにアクセスしたいと思います。クラス内のパネルのステータスを変更する

メソッド内でフォームのオブジェクトを作成し、ステータスを変更しようとしました。エラーは発生しませんが、パネルは表示されません。

public class Compare 
{ 
    public void Comp(a,b) 
    { 
    form1 f=new form1(); 

    if(a<b) 
     f.panel1.visible=true; 
    else if(a>b) 
     f.panel2.visible=true; 
    else 
     f.panel3.visible=true; 
    } 
} 

誰でもC#でこれを行う方法を教えてもらえますか?

ありがとうございます。

答えて

1

もフォーム1に追加されますか?

f.Controls.Add(panel1); 
+0

私はクラスにこのコードを追加する必要がありますか?引数としてpanel1をとりません – Srima

+0

どこかのpanel1がform1で定義されています。コードで行うのか、ツールボックスからフォームにドラッグするのですか?コードでは、たとえば、このコードをform1のコンストラクターに配置する必要があります。フォームに追加された場合は、InitializeComponent()関数に既に存在しているはずです。 – RvdK

+0

私はそれをフォームにドラッグしました。それでも動作していない – Srima

0

Compを実行する前にフォームが既に存在しますか?

新しいフォームを作成してメインフォームへの参照を期待することはできません。あなたはこのように、コンプに別のパラメータを追加する必要があります。

public void Comp(form1 f,a,b) 
{ 
if(a<b) 
    f.panel1.visible=true; 
else if(a>b) 
    f.panel2.visible=true; 
else 
    f.panel3.visible=true; 

}

+0

はいフォームは既に存在します。では、Comp()メソッドを呼び出すときにどのパラメータを渡す必要がありますか? – Srima

+0

ご協力いただきありがとうございます。今はその作業 – Srima

関連する問題