2016-07-20 14 views
0

Ich habe kleines Problem mit Ereignis in MVP Ansicht und Presenter. Wenn _artistToolbarButton_Click Ereignis gefeuert wird er Start zeigen Sie mir eine andere registrierte Ereignisse. Warum passiert das? Überprüfen Sie die Animation und Sie werden sehen, dass eine andere Meldungsbox von einem anderen Ereignis ebenfalls ausgelöst wird!C# Ereignis Start Schleife

enter image description here

Hier ist meine Form Code:

Form:

public partial class MainForm : Form, IMainView 
    { 
     #region Properties 

     public IPresenter Presenter { get; set; } 

     #endregion 

     // Constructor 
     public MainForm() 
     { 
      this.InitializeComponent(); 
      this.Presenter = new MainPresenter(this); 
      this.WireEvents(); 
     } 

     public event EventHandler<EventArgs> OnLoad; 
     public event EventHandler<EventArgs> ShowArtist; 
     public event EventHandler<EventArgs> ShowLibrary; 
     public event EventHandler<EventArgs> ShowTopList; 

     // Wire events 
     private void WireEvents() 
     { 
      this.Load += new EventHandler(MainForm_Load); 
      this._artistToolbarButton.Click += new EventHandler(_artistToolbarButton_Click); 
      this._libraryToolbarButton.Click += new EventHandler(_libraryToolbarButton_Click); 
      this._topListToolbarButton.Click += new EventHandler(_topListToolbarButton_Click); 
     } 

     #region Events 
     // Load 
     private void MainForm_Load(object sender, EventArgs e) 
     { 
      if(this.OnLoad != null) 
      { 
       this.OnLoad(this, EventArgs.Empty); 
      } 
     } 

     // Artist 
     private void _artistToolbarButton_Click(object sender, EventArgs e) 
     { 
      if (this.ShowArtist != null) 
      { 
       this.ShowArtist(this, EventArgs.Empty); 
      } 
     } 

     // Library 
     private void _libraryToolbarButton_Click(object sender, EventArgs e) 
     { 
      if (this.ShowLibrary != null) 
      { 
       this.ShowLibrary(this, EventArgs.Empty); 
      } 
     } 

     // Top list 
     private void _topListToolbarButton_Click(object sender, EventArgs e) 
     { 
      if (this.ShowTopList != null) 
      { 
       this.ShowTopList(this, EventArgs.Empty); 
      } 
     } 
     #endregion 
    } 

    public class MainPresenter : IPresenter 
    { 
     private IMainView _view; 

     // Constructor 
     public MainPresenter(IMainView view) 
     { 
      this._view = view; 
      this.WireEvents(); 
     } 

     // Wire events 
     public void WireEvents() 
     { 
      this._view.OnLoad += OnLoad; 
      this._view.ShowArtist += ShowArtist; 
      this._view.ShowArtist += ShowLibrary; 
      this._view.ShowArtist += ShowTopList; 
     } 

     // On load 
     private void OnLoad(object sender, EventArgs e) 
     { 
      MessageBox.Show("OnLoad"); 
     } 

     // ShowArtist 
     private void ShowArtist(object sender, EventArgs e) 
     { 
      MessageBox.Show("ShowArtist"); 
     } 

     // ShowLibrary 
     private void ShowLibrary(object sender, EventArgs e) 
     { 
      MessageBox.Show("ShowLibrary"); 
     } 

     //ShowTopList 
     private void ShowTopList(object sender, EventArgs e) 
     { 
      MessageBox.Show("ShowTopList"); 
     } 
    } 

Moderator:

public class MainPresenter : IPresenter 
    { 
     private IMainView _view; 

     // Constructor 
     public MainPresenter(IMainView view) 
     { 
      this._view = view; 
      this.WireEvents(); 
     } 

     // Wire events 
     public void WireEvents() 
     { 
      this._view.OnLoad += OnLoad; 
      this._view.ShowArtist += ShowArtist; 
      this._view.ShowArtist += ShowLibrary; 
      this._view.ShowArtist += ShowTopList; 
     } 

     // On load 
     private void OnLoad(object sender, EventArgs e) 
     { 
      MessageBox.Show("OnLoad"); 
     } 

     // ShowArtist 
     private void ShowArtist(object sender, EventArgs e) 
     { 
      MessageBox.Show("ShowArtist"); 
     } 

     // ShowLibrary 
     private void ShowLibrary(object sender, EventArgs e) 
     { 
      MessageBox.Show("ShowLibrary"); 
     } 

     //ShowTopList 
     private void ShowTopList(object sender, EventArgs e) 
     { 
      MessageBox.Show("ShowTopList"); 
     } 
    } 
+0

Sieht ein einfaches Kopieren und Einfügen Fehler werden in 'WireEvents' – TheLethalCoder

+1

Bitte geben Sie ein minimales vollständiges und verifizierbares Beispiel an (http://stackoverflow.com/help/mcve), lassen Sie den Benutzer hier nicht Ihren gesamten Code durchsuchen. Versuchen Sie, Ihr Problem auf das absolute Minimum zu reduzieren, das für die Reproduktion erforderlich ist. – HimBromBeere

Antwort

2

Ändern Sie den Code int o dieses:

// Wire events 
public void WireEvents() 
{ 
    this._view.OnLoad += OnLoad; 
    this._view.ShowArtist += ShowArtist; 
    this._view.ShowLibrary += ShowLibrary; 
    this._view.ShowTopList += ShowTopList; 
} 

Es ist einfach ein Fehler Ereignis Link :)

1

Sie richtig an Veranstaltungen in abonnieren sollte Presenter: