2011-01-14 9 views
0

私の仕事は、のMVP実装。 私はビュー(フォーム)にCheckBoxを持たせたい - その役割は、フォームの一部のフィールドの表示される真偽を切り替えることです。C#でMVPチェックボックスを実装していますか?

私のプロジェクトをMVPとして維持するために、Presenterにいくつかのコードを記述する必要がありますか?だから、もう一度

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked == true) 
      SetTelephoneVisible(); 
     if (checkBox1.Checked == false) 
      SetTelephoneInvisible(); 
    } 

public void SetTelephoneVisible() 
    { 
     this.telephone.Visible = true; 
     this.label5.Visible = true; 
    } 
    public void SetTelephoneInvisible() 
    { 
     this.telephone.Visible = false; 
     this.label5.Visible = false; 
    } 


     this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); 

のForm1.cs :

は今、私は私の見解では、そのチェックボックスに関連するすべてのもの

Form1.Designercs ました - 私のプロジェクトをMVPとして維持するために、Presenterにいくつかのコードを付ける必要はありますか? ...どうすればいいですか?

PS:その私の意見モデルビュープレゼンターにかなっ

答えて

0

電話番号を隠すことは純粋なUI、短命の行動のままですが、プレゼンターには通知しません。ユーザーがコンボボックスを開いたときにプレゼンターに通知しませんか?

しかし、アプリケーションやビジネスロジックを追加するとすぐに状況が変わります(たとえば、フィールドの可視性に関するユーザー設定の保存など)。

0

を明確にするために必要であれば、私は、uの私のコードのすべてを与えることができ、非常に広範な用語であり、それの異なるバリエーションがあります。しかし、一般に、すべてのUIパターンの目的は、ロジックをUIプレゼンテーションから分離することです。したがって、短い「愚かな」答えは「はい」です。しかし、再び私の意見では、このトピックは、哲学的な性質であり、発表者にはどのようなロジックがありますか?たとえば、ユーザーがListBoxコレクションをスクロールして表示アイテムを変更した場合、プレゼンターにこれを通知し、おそらくあなたがそれを必要としない場合ではないでしょうが、これは論理です...あなたがフォームのすべてのロジックをプレゼンターで動かすと、コントロールを再開発することになります。
ビジネスロジックやモデルに影響を与える場合は、おそらく必要です。

+0

CheckBoxはモデルにまったく影響しません。正直言って、私がPrezenterに影響を与えるかどうかはわかりません...しかし、それはすべてのイベントがPrezenterに影響を与えるようです - 私はそうですか? ...そしてbtw - ここで投稿されたサンプル実装を使用して:http://blog.vuscode.com/malovicn/archive/2006/10/10/Model-View-Presenter-_2800_MVP_2900_-pattern.aspx Prezenter、および変更されたデータ構造) - チェックボックスロジックをPrezenterに追加する方法は? – dantuch

関連する問題