2016-06-27 7 views
0

サブフォームメソッドからメインフォームを変更するメソッドを呼び出す最もクリーンな方法は何でしょうか。メインフォームを他のクラスから呼び出す方法

最初のサブフォームが終了するまで、mainFormを無効にしたままにします。今、私は単純にmainFormオブジェクトをサブフォームに渡し、サブフォームはmainForm.Enabled = trueを実行し、終了したらそれを閉じます。そのようなmainForm全体を渡すのはむしろ面白いのではないでしょうか?それはどのように行われたのですか?あなたは、メインウィンドウのインスタンス(メイン・ウィンドウタイプとしてキャスト)を取得することができます

Application.OpenForms[0] 

public bool FormEnabled{ 
    get{ return this.Enabled;} 
    set{ this.Enabled = value;} 
} 
+2

いいえ、フォームをお互いの内部に掘り下げるべきではありません。 'FooHappened'イベントがフォームを有効にした結果を持つ、MVVMやシンプルイベントなどのデザインパターンを適用します。 – CodeCaster

+0

メインフォームのenabledプロパティをfalseに設定し、サブフォームを閉じるときに、メインフォームのenabledプロパティをtrueに設定します。 –

+0

インターフェースを使用するクリーナーの方法:メインフォームは、このプロパティに対して新しい動作を持つように見えるため、プロパティ 'Enable'を持つインターフェイスと、この新しい動作に必要な他の特定のメソッドを実装する必要があります。そして、メインフォームの代わりにインターフェイスをサブフォームに渡すことができます。 –

答えて

-1

あなたはMainFormをの有効popertyを公開することができます。メソッドをパブリックにする場合は、2番目のウィンドウからメソッドまたはプロパティを呼び出すことができます。

編集:

あなたはApplicationオブジェクトにアクセスする

using System.Windows.Forms; 

を参照する必要があります。

+2

プロパティはすでに公開されています。だから、なぜ別の財産でそれをラップするのですか? –

関連する問題