Autor Beitrag
Freefly85
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 04.05.11 16:55 
Hallo

Ich habe zwei C# Projekte.
Wie kann ich vom ersten Projekt das zweite Projekt starten und dann auch noch gleich auf Variablen des zweiten Projektes zugreifen?

Ich habe das zweite Projekt bereits in die selbe Projektmappe importiert. Nun wie weiter? Auf was muss ich achten? Welche Implementationen muss ich vornehmen?

Gruss
Kevin
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 04.05.11 16:59 
Hallo,

um was für Projekte handelt es sich denn (Konsole, WinForms, WPF, Klassenbibliothek)?
Freefly85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 04.05.11 18:27 
Hallo Th69

Es handelt sich (bei beiden Projekten) um WinForms Anwendungen. Dazu sind bei beiden Projekten noch zusätzliche Klassen mit normalen Berechnungsfunktionen, welche in den jeweiligen Hauptklassen (WinForms) instanziert sind als Objekte.

Gruss
Kevin
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 04.05.11 19:48 
Hallo Kevin,

du könntest die eine WinForms-Assembly direkt als Referenz (Verweis) zu der anderen hinzufügen und dort dann ganz normal dessen Klassen (Forms) benutzen und aufrufen.
(Du solltest aber nicht die Main-Methode aufrufen, da du sonst zwei Application.Run()-Aufrufe hättest - ich weiß nicht, ob sich dies so gut vertragen würde).

Und der Datenaustausch kann dann einfach über (public) Eigenschaften bzw. Ereignisse stattfinden.

Was war denn der Hintergrund, daß du zwei getrennte Projekte hast?

Nur noch als Info: wenn du beide WinForm-Anwendungen getrennt (z.B. per Process.Start()) starten würdest, so wäre der Aufwand für den Datenaustausch um ein vielfaches höher. Stichwort: Interprocess-Communication (IPC)

Für diesen Beitrag haben gedankt: Freefly85
Freefly85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 05.05.11 11:40 
Vielen Dank!

Es schein, als hättest Du ziemlich viel Ahnung :-)
Ich werde so bald als möglich das Ganze versuchen umzusetzten.

Der Hintergrund ist folgendes:
Ich habe ein komplettes Projekt bereits programmiert. Nun ist eine Zusatzanforderung dazugekommen.
Für diese Zusatzanforderung habe ich im Internet ein C#-Projekt gefunden (channel9.msdn.com/co...aser-Tracking-Camera). Nun möchte ich von meinem Projekt die Implementationen des heruntergeladenen Projektes verwenden.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 05.05.11 12:13 
Hallo,

du könntest (da du ja den kompletten Source-Code des "Laser Tracking Camera"-Projektes hast, dieses auch einfach als "Klassenbibliothek" (Class Library) erstellen lassen (einfach in den Projekt-Eigenschaften umstellen). Dann referenzierst du dieses Projekt in deinem eigenen Projekt und es wird dann automatisch die "Laser Tracking Camera"-DLL in dein Ausgabeverzichnis kopiert ("Copy Local" = "true").

P.S: Danke für dein Kompliment - ich tue zumindestens so, als ob ich Ahnung habe ;-)
Freefly85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 05.05.11 16:29 
Danke!

Ich habe es nun gleich versucht. Hat wunderbar funktioniert. Jetzt kanns dann weitergehen. ;-)

Gruss
Kevin
Freefly85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 06.05.11 22:50 
Es ist noch eine Frage aufgetaucht...

Ich habe nun das heruntergeladene Projekt in mein Projekt als DLL eingebunden unter "Verweise" (ich arbeite mit VS2010).
In der Klasse verwende ich die Bibliothek:
ausblenden C#-Quelltext
1:
using motion;					


Nun wie kann ich nun aus meinem Projekt das Start-GUI mit dem Namen "MainForm.cs" starten?

Ich versuchte es irgendwie so:
ausblenden C#-Quelltext
1:
motion.MainForm.Start();					


So als Idee...aber das geht leider nicht. :-( Mir fehlen hier eindeutig noch etwas Syntax-Kenntnisse :-)
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 07.05.11 09:54 
So wie jedes andere Form auch:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
MainForm frm = new MainForm();

frm.Show();
// bzw.
frm.ShowDialog();

(nur wenn in deinem Hauptprojekt auch deine Hauptform'MainForm' heißt, dann solltest du die andere Form voll qualifizieren: motion.MainForm)

P.S: Namensbereiche sollten eigentlich mit einem Großbuchstaben beginnen