none
Formular verlinken RRS feed

  • 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

    Dienstag, 13. August 2013 19:53

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
    Dienstag, 13. August 2013 20:41
    Moderator

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.

    Dienstag, 13. August 2013 20:03
    Moderator
  • 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?

    Dienstag, 13. August 2013 20:16
  • Dienstag, 13. August 2013 20:26
  • 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
    Dienstag, 13. August 2013 20:41
    Moderator
  • 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.

    Dienstag, 13. August 2013 21:18
  • 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.

    Mittwoch, 14. August 2013 15:47
    Moderator
  • Würde ja gerne als Antwort markieren aber ich kann nur Abstimmen, Antworten,Zitieren, Als Missbrauch melden oder den Typ von Frage auf Diskussion ändern. Wo macht man das?
    Freitag, 16. August 2013 14:58
  • 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.

    Dienstag, 20. August 2013 08:42
    Moderator