Mitgliederverwaltung - Hilfe bei der Erstellung sauberen Codes

  • VB.NET
  • .NET 4.5

Es gibt 142 Antworten in diesem Thema. Der letzte Beitrag () ist von DerSmurf.

    Neu

    Sagt mal, würdet ihr die TabPages in meinen Einstellungen auch trennen?
    Also für jede Einstellungen TabPage z.B. eine eigene Form?
    Oder kann das bleiben so wie es ist (als TabPages eben) - weil der Code ja sehr überschaubar ist und das ganze ja auch thematisch zusammenhängt?

    Neu

    ich hab deine Einstellungen grad nicht im Detail im Kopf - daher eher generell:
    Komplexe Dinge auf einem Tab kommen bei mir in ein Ucl.
    Also ein DGV mit mw. ein paar Detail-Controls, die an derselben BindingSource hängen - das kann maximal noch auf dem Tab bleiben.
    Aber nur, wenn keine Logik dahinter steckt.
    Oder anders: Wenn ein Tab nur eine BindingSource "beansprucht" und(!) keine weitere CodeBehind-Logik - dann lager ich nicht in ein ucl aus.
    Ausnahmen werden in Massen geduldet.
    Hängt auch vom Tab-Parent ab: ZB wenn der TabParent das MainForm ist - dessen CodeBehind ist meist eh schon ziemlich voll mit verschiedensten Dingen - da bin ich froh um jede Zeile, die ich auslagern kann.
    Ist der TabParent ein anderes Ucl, so ist eher möglich, da ein bischen weiteren Kram zuzulassen.

    Ansonsten ists ja kein Act, einen zu komplex werdenden Tab umzumodeln.

    Ich folge da einem ganz ganz generellen Prinzip: Auslagern, wenn das Ding zu gross wird.
    (Dieses Prinzip wenden sogar schon die Amöben an.)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Neu

    Soho.
    Ich habe jetzt die Änderungsvorschläge von @tragl verstanden und übernommen (mit einer Ausnahme. siehe unten). Außerdem habe ich das Projekt nun komplett mit MDI gestaltet und meinen Code hübsch getrennt.
    Die Einstellungen habe ich dabei aber zusammen gelassen und in einer TabControl organisiert. Sind zwar 3 BindingSources, aber sogut wie kein Code.
    Die Buttons haben keine Bildchen mehr, sondern aussagekräftige Beschriftungen. Außerdem habe ich die "Home Seite" entfernt. Ihre Aufgabe übernimmt nun ein MenuStrip.
    Ich habe aber noch drei Fragen zum Code:
    1. @ErfinderDesRades
    Du lädst und speicherst das DataSet aus xml mit folgendem Aufruf:
    Dts.DataFile("..\..\DataStuff\AngelmarkenData.xml").Register(Me, handleFormClosing:=True).Fill
    Zur Laufzeit muss ja der Pfad geändert werden. Warum heißt dein Code dann nicht:

    VB.NET-Quellcode

    1. If System.Diagnostics.Debugger.IsAttached Then
    2. Dts.DataFile("..\..\DataStuff\AngelmarkenData.xml").Register(Me, handleFormClosing:=True).Fill
    3. Else
    4. '"normaler" Pfad
    5. End If


    2. @tragl
    Deine KeyDown Idee in der frmKunden funktioniert glaube ich nicht. Denn: ' 'Mit Else werden dann die übrigen Tasteneingaben an die Suchen-Textbox übergeben wären zu viele Tasten die abgefangen werden müssen (Strg, Alt, alle F-Tasten, ...)
    Daher habe ich da wieder meinen Code reingeschmissen und deinen auskommentiert. Ich glaube dass KeyPress Event ist hier sinnvoller, denn diese Problematik ist hier nicht.
    Ich bekomme es aber nicht hin, dass mein Event feuert, wenn die Seite angezeigt wird - ich muss erst, auf der Form was anklicken. Habe PersonDataGridView.Focus() versucht, bringt aber nix.
    Ich halte aber ein KeyEvent der Form für sinnvoller. Ein KeyEvent des DGV würde ja z.B. nicht funktionieren, nachdem ich auf den Button "neuer Kunde" geklickt habe.
    Wäre es evtl. denkbar ein KeyEvent der MainForm zu verwenden und die gedrückte Taste, sowie da gerade angezeigt MDIChild an eine Sub in der entsprechenden MDIChild Form zu übergeben?
    Diese verwertet dann die Eingabe und führt entsprechende Aktionen aus?

    3. Ich habe bevor ich angefangen hab, mein Projekt umzustellen die alten Forms umbenannt. Habe allen ein "OLD" vor dem Namen verpasst.
    Damit meine fertige Solution nun aber läuft, musste ich den gesamten Code im Modul Program.vb auskommentieren. Hier stand:
    Private Iterator Function CreateForms() As IEnumerable(Of Form)
    Yield New OLDfrmAngelmarken
    End Function
    Denn nach der vollständigen Umstellung, habe ich alle "OLD" Forms gelöscht. In der Funktion hier bringt es aber auch nichts, die frmMain zu verwenden.
    Aber mein Programm läuft ja auch ohne das Modul. Wozu ist es dann gut?
    Dateien
    • Angelmarken04.zip

      (312,03 kB, 1 mal heruntergeladen, zuletzt: )