Werte von Forms an DLL übergeben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Xylon.

    Werte von Forms an DLL übergeben

    Hallo allerseits :D

    Ich habe momentan ein ziemlich großes Projekt am laufen, und aufgrund der Masse an Code bzw. Funktionen wollte ich gerne ein oder zwei dll Dateien einbauen. Über die Erstellung und alles weiß ich wohl bescheid. Nur das Problem ist, dass in den Funktionen, die ich in eine dll packen will, Variablen und Werte von anderen Forms braucht, und die dll ohne konkrete Deklaration eben jener Werte logischerweise nicht erstellt werden kann. Der Versuch die Variablen in der dll vorzeitig zu deklarieren und während der Laufzeit neu zu übergeben schlug auch fehl bzw. ist gar nicht möglich, weil ich von der dll aus nicht auf externe Forms verweisen kann - oder? Ich bin momentan noch dabei mich mit den Grundlagen der Verwendung von Klassenbibliotheken zu befassen aber ich glaube es wäre produktiver, wenn ich mich nun direkt mit dem auseinander setze, womit ich später arbeiten möchte.

    Als kleines Beispiel hier:

    Visual Basic-Quellcode

    1. For i As Integer = 0 To ProfilerTB.Lines.Length - 2
    2. Dim nevent = Mid(ProfilerTB.Lines(i), 1, ProfilerTB.Lines(i).IndexOf("Event:"))
    3. Dim ndate = Mid(ProfilerTB.Lines(i), ProfilerTB.Lines(i).IndexOf("Date:") + 2)
    4. Dim listitem As New ListViewItem(nevent, 0)
    5. listitem.SubItems.Add(ndate)
    6. Select Case ProfilerForm
    7. Case "NewProfile"
    8. NewProfile.ListView1.Items.Add(listitem)
    9. NewProfile.SaveProfile()
    10. NewProfile.Close()
    11. Case "DetailView"
    12. UserControl11.ListView1.Items.Add(listitem)
    13. DatabaseGUI.DetailedView.Show()
    14. End Select
    15. Next


    Das ist eine noch vergleichsweise kleine Funktion, aber das Prinzip bleibt dasselbe. Ich muss irgendwie an die Globalen Variablen und Werte aus den Textboxen o.Ä. von den Forms kommen.
    Wäre super nett wenn mir eventuell jemand einen Link zu dem Thema schicken oder kurz erklären könnte, wenn es denn überhaupt möglich ist. Vermutlich sind meine Suchbegriffe nur falsch formuliert, aber zu meiner Frage habe ich bisher nichts im Forum, auf den MSDN oder sonst wo gefunden...

    Vielen Dank schon mal im voraus!
    Hi,

    eigentlich ist es so, dass man die Logik eines Programms auslagert. Dazu hast du ja schon richtigerweise ein neues Projekt erstellt.
    Aber dein Ansatz ist falsch.
    Die Klassenbibliothek soll sich die Werte nicht holen, sondern deine Form muss sie ihr geben.
    D.h. du hast in deiner Bibliothek Methoden, welche du mit Parametern aus der Form aufrufst. Eventuell gibt es dann einen Rückgabewert an die Form. (z.B bei DB Abfragen)
    Du verweist also aus deiner Anwendung auf die Logik.
    @Xylon So isses, mach es, wie @LaMiy meint.
    Gib der DLL-Klasse die entsprechenden Properties, dann instanziiere diese Klasse, füttere sie mit den Werten und lass sie tun, wozu sie da ist.
    Und:
    Strikte Trennung von GUI und Daten. Die DLL sollte nicht wissen, dass sie an einer GUI hängt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!