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);
}
}
}
}
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)
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!
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
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