Laden...

Eigenes Event wird nicht ausgelöst

Erstellt von dennis-320 vor 12 Jahren Letzter Beitrag vor 12 Jahren 639 Views
Thema geschlossen
D
dennis-320 Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
Eigenes Event wird nicht ausgelöst

Hallo zusammen,

bin sowohl neu hier im Forum als auch neu was die Programmierung mit C# angeht.
Ich hoffe waere dankbar, wenn ich einen Tipp bekommen koennte, warum mein Programm nicht funktioniert.
Habe mir auch schon die Doku zu dem Thema durchgelesen. Der Compiler beschwert sich zwar nicht, aber die Events werden nicht ausgeloest.

Hier noch eine kurze Beschreibung was ich ueberhaupt machen moechte:

-Es gibt 2 Windowsforms und eine Klasse die Project heisst
-In Form 2 wird ein Objekt von der Klasse Projekt erzeugt
-Dieses Objekt soll unter bestimmten Umstaenden ein Ereignis in einer Methode projektNeu in der Klasse Projekt ausloesen.
-Form 1 soll dieses Ereignis abbonieren und ein Element in der Form1 veraendern
-Events will ich verwenden, weil es nicht moeglich ist Form elemente aus der Klasse Projekt zu bearbeiten

Das komplette Programm funktioniert so wie ich mir das vorstelle, allerdings wird das gewuenschte Event nicht aufgerufen...

Hier der Code



FORM1:


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        void project_NewProject(object sender, EventArgs e)
        {
            //throw new NotImplementedException();

            textBox1.Text = "TEST";
        }
    }
}

FORM 2:

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {

public void button1_Click(object sender, EventArgs e)
        {
                          
               Project project;
                project=new Project();
                project.NewProject += new EventHandler(project_NewProject);
                project.newProject(maskedTextBox2.Text, maskedTextBox1.Text);
            
        }
}


KLASSE PROJEKT:

namespace WindowsFormsApplication1
{
    
    public  class Project
    {
        public  event EventHandler NewProject;



	public  void newProject(string path, string filename)
        {          
            
         
            OnNewProject(EventArgs.Empty);
         }



	protected virtual void OnNewProject ( EventArgs e)
        {
            EventHandler enewProject = NewProject;
            if(enewProject==null)
            {   
                enewProject(this, e);
            }
        }

    }



}


G
538 Beiträge seit 2008
vor 12 Jahren

Denk mal hierüber nach:

if(enewProject==null)
 

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

Z
403 Beiträge seit 2007
vor 12 Jahren

Hallo dennis-320,

EventHandler enewProject = NewProject;

Die Zuweisung des Events ist auch unnötig.

Schau ausserdem mal hier [FAQ] Kommunikation von 2 Forms

Und Vorsorglich: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Den Fehler hättest du durch einfaches debuggen an der Stelle wo das Event gefeuert werden sollte, bestimmt selber gefunden!

D
615 Beiträge seit 2009
vor 12 Jahren

Hallo dennis-320

Desweitern würde ich folgendes emfpehlen :

Um Parameter in Events zu verwenden musst du eine Klasse erstellen welche von EventArgs erbt. Die Deklaration lautet dann etwa so :

Public event Eventhandler<MyPersonalEventArgs> MyEvent;

Ich sehe das du das Event abonierst wo aber ist der Eventhandler ? (methode project_NewProject ?)

Mach mal folgendes

schreibe : project.NewProject += und drücke 2 x TAB...

Beste Grüsse

Diräkt

D
dennis-320 Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren

Denk mal hierüber nach:

if(enewProject==null)  
   

Uppps! Das kann ja schonmal nicht gehen!

Also erstmal vielen Dank fuer die schnellen Antworten!
Ich werde die Tipps mir jetzt erstmal anschauen und dann den Code nochmal ueberarbeiten.

Viele Gruesse

Thema geschlossen