Seite 1 von 1
Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 12:50 am
von canlot
Hallo alle die Überschrift ist vielleicht ein wenig komisch aber ich versuche es so zu erklären.
Ich habe noch nie an großen Projekten gearbeitet außer in Php vielleicht.
Als das Problem ist folgendes: Ich habe einen einfachen win form Projekt erstellt und ich habe mehrere Dateien also Program.cs ist ja das Hauptprogramm und die MainForm.cs ist die Datei wo die Ereignisse stehen in der Klasse MainForm abgeleitet von der Klasse Form. Wie kann ich also wenn ein Ereignis auftritt die Daten aus dem Hauptprogramm abfragen also aus der Program.cs beziehungsweise wie machen die Entwickler das. Ich definiere die Klasse MainForm in dem Hauptprogramm:
Code: Alles auswählen
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
Also noch mal wie kann ich das ganze zusammenarbeiten lassen und wie tut ihr es?
:edit Was ich noch vergessen habe ich arbeite mit SharpDevelop keine Lust auf das fette Microsoft Ding

schlimm genug das ich mit C# entwickel

Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 2:00 am
von Xin
MainForm ist damit quasi das Hauptprogramm.
Programm.cs ist letztenendes nur der Teil des Programms, der das MainForm öffnet.
Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 3:17 am
von canlot
Das ist mir schon bewusst. Die Frage ist die, wie können sie untereinander kommunizieren, Daten austauschen etc. ?
Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 10:28 am
von cloidnerux
Das ist mir schon bewusst. Die Frage ist die, wie können sie untereinander kommunizieren, Daten austauschen etc. ?
Ich habe bisher noch nie mit der Program.cs irgendwelche Daten ausgetauscht. Warum? Weil die program.cs absolut keinen Mehrwert hat als irgendeine andere Klasse/Datei.
Zudem ist es auch nicht vorgesehen:
Das ist die letzte ausgeführte Zeile Code in der program.cs und die Wartet bis sich die MainForm beendet. Da passiert sonst nichts.
Du musst schließlich bedenken, dass du hier mit einem GUI Programm arbeitest. Du willst deine Algorithmen mit deiner Oberfläche verbinden und nicht tausende Inerfaces definieren.
Wenn ich Code habe, der nicht in die MainForm gehört, lege ich eine neue Klasse und damit eine neue Datei an und implementiere dort alles was ich haben möchte und instanziere es in der MainForm.cs.
Du kannst aber auch deine Klassendefinition um Parameter erweitern:
und dann in der program.cs
Das dürfte so gehen, hab ich aber noch nie gemacht.
Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 12:26 pm
von Xin
canlot hat geschrieben:Das ist mir schon bewusst. Die Frage ist die, wie können sie untereinander kommunizieren, Daten austauschen etc. ?
Kurzfassung: Pack alles, was Du brauchst in die MainForm. Die Programm.cs ist nur eine Art vorgeschobene main-Funktion, die die MainForm startet.
Wofür brauchst Du die Kommunikation!?
Ansonsten kannst Du lediglich vor "Application.Run()" die MainForm mit Daten bestücken und CallBack-Funktionen bestimmen.
Aber wozu benötigst Du das?
Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 1:34 pm
von canlot
Ok danke für die Antworten. In C/C++ hat man doch nur eine Hauptdatei wenn ich mich recht erinnere auch in GUI Anwendungen?
Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 1:51 pm
von cloidnerux
Ok danke für die Antworten. In C/C++ hat man doch nur eine Hauptdatei wenn ich mich recht erinnere auch in GUI Anwendungen?
Das hat damit nichts zu tun. Deine "Hauptdatei" existiert in dem Sinne nicht, sondern du brauchst einen Einstiegspunkt, der Punkt wo dein Programm anfangen soll. Das ist bei C/C++ die "main"-Funktion, wobei man das auch umstellen kann. In C/C++ arbeitet man dann in der Regel in der main-Funktion weiter und ruft seine Hauptkomponenten auf und macht, muss man aber nicht. Du kannst auch einfach eine Funktion aus einer anderen Datei aufrufen, die dann die Arbeit macht.
So wird es auch in C# mit WinForms gemacht. Hier aber aus dem Grund, um die GUI als eigenständige Klasse und nicht als Programm zu handhaben. Daher programmiert man seine Funktionalität auch in die MainForm hinein und kümmert sich nicht weiter um die program.cs
Re: Projektzusammenarbeit intern.
Verfasst: Fr Jan 04, 2013 3:46 pm
von Xin
canlot hat geschrieben:Ok danke für die Antworten. In C/C++ hat man doch nur eine Hauptdatei wenn ich mich recht erinnere auch in GUI Anwendungen?
Das hier ist das Hauptprogramm für progtall, geschrieben in C++
Code: Alles auswählen
int main( int argc, char ** argv )
{
unsigned int port = 8000;
if( argc > 1 )
{
port = atoi( argv[1] );
}
XSD::CMS::Configuration config;
HttpService http( port );
http.serve( config );
printf( "quit\n" );
return 0;
}
Ob da jetzt http.serve(...) und jemand auf Ereignisse an einem TCP/IP-Port horcht steht oder Application.run(...) und das Programm auf Ereignisse des User wartet - so wirklich einen Unterschied macht das nicht, oder?

Die Action passiert jedenfalls nicht in main(), die wird in beiden Fällen nur gebraucht, um die Klasse aufzubauen, wo das eigentliche Programm abläuft.