Autor Beitrag
deusr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 20.03.07 17:59 
Hallo,

vielleicht kann mir einer von Euch bei einem Problem helfen:

Ich habe eine Projektmappe mit mehreren Projekten. Zwei davon sind für dieses Beispiel wichtig. GUI (wird als DLL kompiliert) und Main (ausführbares Programm). Main hat das GUI Projekt als Verweis. GUI soll aber unabhängig von Main arbeiten, deshalb kann / darf ich in GUI auch kein Verweis auf Main erstellen.

Nun möchte ich folgendes machen:

Ich starte das Programm. Es führt

ausblenden C#-Quelltext
1:
Application.Run(new GUI());					


aus. Dadurch wird eine Form erzeugt. Die Form enthällt z.B. selbst einen Button "Datei öffnen". Beim Klick auf den Button wird der User aufgefordert, eine Datei auszuwählen. Nun soll jedoch der Dateiname in der Klasse Main landen und dort mit dem Dateinamen gearbeitet werden.

Hat jemand eine Idee, wie man soetwas realisieren kann?


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Di 20.03.2007 um 17:11
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 20.03.07 18:03 
Dann konzipier doch das Fenster, welches die Datei auswählt so, dass es eine Eigenschaft besitzt, in die es die ausgewählte Datei reinschreibt. Wie bei einem openDialog halt, da geht es ja genauso.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
deusr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 20.03.07 18:07 
Ja, das Problem ist aber, dass dann Main - das letztendlich mit dem Dateinamen etwas machne soll - ja nicht weiß, dass der Dateiname tatsächlich gesetzt wurde...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 20.03.07 18:10 
Dann füg halt 'ne weitere Property ein, die das angibt. Oder mach es über den Rückgabe-Wert von ShowDialog(). Auch wie beim OpenDialog ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
deusr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 20.03.07 18:50 
Nene, ich meine das etwas anders.... Okay, ich wähle eine Datei aus, ich schreib die in eine Propperty rein, ich setze einen Flag, dass der Dialog angezeigt wurde, etc.

Das Problem ist jetzt, dass ich irgendwie die Möglichkeit brauche, anschließend nach dem Auswählen des Dateinamens eine Methode aus Main heraus aufzurufen.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 20.03.07 19:04 
Ah, so langsam dämmert es. Im Prinzip brauchst Du also ein Event, welches gefeuert wird, wenn eine Datei ausgewählt wird.

Also so:
ausblenden In der GUI:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    public partial class Form2 : Form
    {
        public delegate void FileSelectedDelegate(string Filename);

        public event FileSelectedDelegate FileSelected;

        private void button1_Click(object sender, EventArgs e)
        {
            FileSelected("Foo");
        }
    }


ausblenden In der Main-Form:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        private void button3_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.FileSelected += new Form2.FileSelectedDelegate(f_FileSelected);
            f.ShowDialog();
        }

        void f_FileSelected(string Filename)
        {
            MessageBox.Show(Filename);
        }


Dann wird Form2.f_FileSelected aufgerufen, wenn in der GUI-Form eine Datei gewählt wird.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
deusr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 20.03.07 21:45 
Danke! Du bist ein Schatz! Ich hoffe jetzt nur, dass alles andere da auch mitspielt.
deusr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 23.03.07 17:14 
Danke! Hat wunderbar funktioniert.

Jetzt habe ich aber noch eine andere Frage zu delegate

ausblenden C#-Quelltext
1:
2:
            Form2 f = new Form2();
            f.FileSelected += new Form2.FileSelectedDelegate(f_FileSelected);


Angenommen FileSelected wäre kein event in der Klasse, sondern eine normale public static void Methode. Wie kann ich denn auf jetzt eine Methode in der Main Klasse zuweisen? Derzeit verwende ich GUI.Form2.FileSelected, aber diese Deklaration muss ich auf jeden Fall vor

ausblenden C#-Quelltext
1:
Form2 f = new Form2();					


treffen, da es sonnst nicht in f drinnsteckt. Kann ich irgendwie f ändern? Damit ich die delegate Zuweisung "irgendwann" nach dem Anzeigen der Form2 setzen / ändern kann?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 23.03.07 17:52 
Ich muss Dir leider sagen, dass ich nicht wirklich verstanden habe, was Du machen willst :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".