2017-02-07 1 views
0

汎用クラスのフォームのコントロールを使用したいと思います。 VBでは非常に簡単ですが、C#ではそれを学びたいので難しいです。 は、だから私はこれまで簡単に答えを見つけて検索し、私はここで対処していますクラスからフォームコントロールを使用する方法


デザイナーの公共へのコントロールを設定:

public System.Windows.Forms.Button button1; 

は、新しいクラスを作成し、例えばでExampleClass

に名前を変更します
public class exampleClass 
    { 
     public static Form1 frm; 
     public static void HideButton() 
     { 
    frm.button1.Visible = false; 
     } 
    } 

Form1のInitializeComponentの後にこれを追加します。

exampleClass.frm = this; 

今あなたが欲しいどこからでもボタンを非表示にすることができます:今

exampleClass.HideButton(); 

私の質問は: 私たちは、より一般的にし、制御および状態(真/偽)を渡したい場合は例:

exampleClass.HideButton(Control, Status) 

どうすればいいですか?あなたが説明するように、事前に

おかげで、 エリアス

答えて

2

まあ、それはまっすぐだ変更:あなたは

ExampleClass.HideControl(frm.Button1, true); 

のようにしかし、私は疑問にこれを書いた後、それを呼び出す

public class ExampleClass 
{ 
    public static void HideControl(Control control, bool hide) 
    { 
     if (control != null) control.Visible = !hide; 
    } 
} 

そして、なぜあなたはこれが必要なのですか?あなたはすでにあなたのButtonを持っている場合は、その理由は単に代わりに別の静的メソッドの

frm.Button1.Visible = false; 

を呼びますか?

+0

おかげルネとあなたの助けのためのすべて。私はツールバーのボタンを有効/無効にするだけでなく、メッセージを表示するために私のすべてのフォームから多くのステータスバーを使用します。そのため、私はMain MDI Formのすべてのコントロールに一般的なメソッドを持つクラスを使用しています。再度、感謝します。 – ekekakos

+2

@ekekakos StackOverflowに感謝の一番良い方法は、あなたを助けた答えを受け入れることです。 –

0

はちょうどそれを実装:パラメータとしてメソッドに制御およびステータスを渡します。含めることを忘れないでください:using System.Windows.Forms;

public class Class2 
{ 
    public static void HideButton(Control c, bool status) 
    { 
     c.Visible = status; 
    } 
} 

と、このようなWinFormで外部クラスを使用します。

Class2.HideButton(this.button2, false); 

PS。私は最初のバージョンでは間違っていました。あなたは静的メソッドを持っていたがっていました。それは

0

なぜ単に:

public static void HideControl(Control control, bool visible) 
{ 
    control.Visible = visible; 
} 
関連する問題