Benutzer mit den meisten Antworten
Formular verlinken

Frage
-
Hallo, habe mehrere VB Projekte in einer VS2012 Projektmappe. Jetzt möchte ich ein Formular aus einem Projekt in einem anderen nutzen ohne es zu kopieren. In Linux würde ich einen symbolischen link auf das File selber setzen, aber in VS2012/Win7 ? Vor allen Dingen kommt der TFGS dann damit klar?
Für jede Info dankbar
Freudi
- Typ geändert Tom Lambert (Koopakiller)Moderator Dienstag, 20. August 2013 08:42
Antworten
-
Also grundsätzlich würde ich ersteinmal einen Verweis auf das Projekt mit der Form setzen. Diese aufrufen sollte auch problemlos möglich sein. (Wie oben gezeigt)
Das größere Problem sind die gemeinsamen Einstellungen. Da du erhöhte Berechtigungen brauchst um die Einstellungen eines anderen Programmes zu ändern, würde ich wahrscheinlich eine eigene Datei dafür erstellen. Da du aber im Programme-Ordner normalerweise keine Schreibberechtigung hast, musst du diese wohl nach AppData o.ä. auslagern.
Nachfolgend noch ein Link zu Verweisen: Hinzufügen von Verweisen
Wenn du allerdings die EXE doch aus der EXE aufrufst, sollte es mit den Berechtigungen keine Probleme mehr geben. Denn lesen kannst du Fremde Einstellungen.
Lagere also die Config-Form ins Config-Projekt aus und lasse die Einstellungen auch von diesem Projekt aus speichern. Wenn du nun Einstellungen ändern möchtest, startest du einfach das 2. Programm und wartest auf eine Rückmeldung. In etwa wie hier.
Wenn du nun Einstellungen aus der Haupt-Anwendung lesen möchtest, dann kannst du einfach die XML-Dateien (.settings) lesen.
Was mir gerade noch auffällt, die app.config enthält eigentlich nichts, was der Benutzer umstellen kann/soll. Dafür ist die user.settings da.
Zum finden dieser Datei findest du hier etwas. Zum auslesen solltest du ab .NET 4.0 XDocument usw. verwenden. Etwas Starthilfe gibt es hier.Nun gibt es noch den Weg über die Registry. Dieser ist in deinem Fall vielleicht sogar der beste Weg. Beide Anwendungen können Daten abspeichern, beide können die Daten lesen.
http://www.codeproject.com/Articles/3881/Working-with-Windows-Registry-using-VB-NET<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Freudi Montag, 9. September 2013 12:16
Alle Antworten
-
Hallo, meinst du damit, eine 2. Anwendung direkt zu starten oder willst du nur die Form aufrufen?
- Die Anwendung starten:
Dim p As New Process() p.StartInfo.FileName = "PfadUndNameDerEXE" p.StartInfo.Arguments = "/Argument1 /Argument2" ' Nur nötig, wenn du wirklich argumente haben willst p.Start() ' Programm starten
- Die Form aufrufen:
Setze einfach einen Verweise in Project2 auf Project1. Anschließend erzeuge eine neue Form und zeige diese an:Dim frm As New WindowsApplication1.Form1()//Form-Instanz erzeugen frm.Show() 'Oder ShowDialog
Wenn du einen Verweis setzt, wird die verlinkte Anwendung automatisch mit mit ins Ausgabeverzeichnis kopiert. Diese sollte auch bei der Assembly liegen bleiben.
Wenn du den Pfad angeben musst, musst du natürlich wissen, wo die Anwendung liegt. Im selben Ordner/Ein eigenes Installationsverzeichnis (Einstellung des Pfades in der Registry) oder vielleicht auch irgendwo ganz anders.Symbolische Links gibts auch unter Windows 7. Nur wüsste ich nicht was du hier mit einem machen willst.
<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. - Die Anwendung starten:
-
Ich habe ein größeres Projekt in dem es einen fertigen Konfigurationsdialog(Winform) gibt. Der schreibt in die "App.config". Nun will ich die Konfiguration als einzelne Exe anbieten. Dazu habe ich eine neues Projekt in der Projektmappe angelegt und wollte das eine Formular nun in das neue Projekt reinlinken.
Zusätzliches Problem ist natürlich das es für die neue Exe auch ne neue App.config gibt,d.h.
System.Configuration.ConfigurationManager.OpenExeConfiguration(Configuration.ConfigurationUserLevel.None) funktioniert ja dann nicht, ich muss irgendwo den Namen der App.config meiner Hauptapplikation angeben.
Hast Du noch ne Idee?
-
Also grundsätzlich würde ich ersteinmal einen Verweis auf das Projekt mit der Form setzen. Diese aufrufen sollte auch problemlos möglich sein. (Wie oben gezeigt)
Das größere Problem sind die gemeinsamen Einstellungen. Da du erhöhte Berechtigungen brauchst um die Einstellungen eines anderen Programmes zu ändern, würde ich wahrscheinlich eine eigene Datei dafür erstellen. Da du aber im Programme-Ordner normalerweise keine Schreibberechtigung hast, musst du diese wohl nach AppData o.ä. auslagern.
Nachfolgend noch ein Link zu Verweisen: Hinzufügen von Verweisen
Wenn du allerdings die EXE doch aus der EXE aufrufst, sollte es mit den Berechtigungen keine Probleme mehr geben. Denn lesen kannst du Fremde Einstellungen.
Lagere also die Config-Form ins Config-Projekt aus und lasse die Einstellungen auch von diesem Projekt aus speichern. Wenn du nun Einstellungen ändern möchtest, startest du einfach das 2. Programm und wartest auf eine Rückmeldung. In etwa wie hier.
Wenn du nun Einstellungen aus der Haupt-Anwendung lesen möchtest, dann kannst du einfach die XML-Dateien (.settings) lesen.
Was mir gerade noch auffällt, die app.config enthält eigentlich nichts, was der Benutzer umstellen kann/soll. Dafür ist die user.settings da.
Zum finden dieser Datei findest du hier etwas. Zum auslesen solltest du ab .NET 4.0 XDocument usw. verwenden. Etwas Starthilfe gibt es hier.Nun gibt es noch den Weg über die Registry. Dieser ist in deinem Fall vielleicht sogar der beste Weg. Beide Anwendungen können Daten abspeichern, beide können die Daten lesen.
http://www.codeproject.com/Articles/3881/Working-with-Windows-Registry-using-VB-NET<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Freudi Montag, 9. September 2013 12:16
-
Danke. Das mit dem Projektverweis hat geklappt. Das Konfigprogramm verweist auf's Hauptprogramm und hat kein eigenes Formular, stattdessen steht in der Application.Designer.vb des Konfigprogrammes
Me.MainForm = New Global.MainProg.frmKonfiguration
Damit öffnet sich der Konfigurationsdialog aus dem Hauptprogramm und kurioserweise klappt sogar My.Settings auch in der Konfigurations.exe. Seltsam das ... aber funktioniert. Problem gelöst.
-
Ich war mir nicht ganz sicher in welcher Assembly dann die Einstellungen gespeichert werden. Wenn es jetzt so geht, ist es gut.
Wenn meine Antwort deine Frage also beantwortet hat, dann markiere diese bitte auch als Antwort. Somit können andere Besucher mit ähnlicher Frage schneller eine Antwort finden.
<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. -
Ich habe den Typ von Diskussion auf Frage geändert, jetzt sollte es gehen.
<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.