Meine Erste Programmieraufgabe vb.net

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

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Meine Erste Programmieraufgabe vb.net

    Hallo,
    ich habe meine erste Programmieraufgabe, nur habe ich keinen blassen schimmer wie ich das ganze bewältigen soll.
    Die Aufgabenstellung sieht wie folgt aus:



    Programmierung Maske - Verzeichnisbearbeitung
    Es soll eine Bearbeitungsmaske für die Pfade erstellt werden, die mindestens folgende Controls enthält:Ein DataGridView, in dem die Verzeichnis-ID, Verzeichnisbezeichnung und Verzeichnispfad angezeigt werden.
    Eine TextBox, über die ein im DataGridView selektiertes Verzeichnis bearbeitet werden kann. Um zu verhindern, dass der Benutzer jeden Pfad mühsam aus dem Explorer kopieren oder diesen eintippen muss, soll ein FolderBrowserDialog verwendet werden.
    Es soll möglich sein, zu vorhandenen Verzeichnisbezeichnungen Verzeichnispfade hinzuzufügen oder vorhandene Verzeichnispfade zu bearbeiten. (*) Aus der Maske heraus soll es auch möglich sein, die zweite Bearbeitungsmaske aufzurufen, um diese Pfadbezeichnung der selektierten Zeile zu bearbeiten.

    * Vorschläge: Entweder werden die Änderungen erst mal nur in die Liste obendrüber übernommen und mit einem Klick auf übernehmen gespeichert, woraufhin sich die Maske schließt. Oder man muss bei jeder Änderung übernehmen klicken, dann wird gespeichert, in der Liste oben aktualisiert, aber die Maske bleibt offen, damit man andere Pfade bearbeiten kann.



    Maske - Verzeichnisbezeichnungsbearbeitung
    Es soll eine Bearbeitungsmaske für die Verzeichnisbezeichnungen erstellt werden, die folgende Controls enthält:Ein DataGridView, in dem die Verzeichnis-ID und die Verzeichnisbezeichnung anzeigt werden.
    Eine TextBox, über die eine im DataGridView selektierte Verzeichnisbezeichnung bearbeitet werden kann.
    Es soll möglich sein, neue Verzeichnisbezeichnungen anzulegen oder vorhandene zu bearbeiten. Das Löschen ist nicht vorgesehen. Bei der Anlage neuer Verzeichnisbezeichnungen ist zu prüfen, ob diese nicht bereits in der Datenbank vorkommt.



    Und so sollen die Masken aussehen die ich bereits erstellt habe:
    Bilder
    • Untitled.png

      22,56 kB, 969×479, 153 mal angesehen
    @adnanche Erwartest Du jetzt von uns, dass wir Deine Hausaufgaben machen, Du dann dafür einen Einser bekommst, aber von der Lösung absolut keine Ahnung hast?
    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!
    Tut mir leid hatte es nicht komplett beschrieben.
    Habe folgendes Problem, wenn ich den Dateipfad hinzufügen möchte, dann steht immer noch in der Verzeichnis-ID folgendes darin:
    "System.Windows.Forms.TextBox, Text:" click:
    dieses würde ich gerne ausblenden, sodass nur der Pfad darin steht.

    Außerdem würde ich gerne in die 3. Spalte erst schreiben, anhand diesem codes: Me.dgv.Rows.Add( , ,txtTextBox1.Text)
    oder so ähnlich

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

    Über [Erweiterte Antwort] kannst Du auch forenintern Bilder hochladen.
    Der Inhalt, der sich in jener DGV-Zeile ergibt, riecht verdächtig danach, dass Du nicht mit Option Strict On arbeitest. Bitte erstmal aktivieren, Fehler ausbügeln, weiterschauen. Oder hast Du gar irgendwo sowas wie TextBoxX.ToString stehen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Das ist mein gesamter Code bisher in der Maske:

    VB.NET-Quellcode

    1. Public Class Directory_managment
    2. Dim index As Integer
    3. Private Sub Directory_managment_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Dim i As Integer
    5. ' Spalten hinzufügen
    6. dgv.Columns.Add("SpVerzeichnis-ID", "Verzeichnis-ID")
    7. dgv.Columns.Add("SpVerzeichnisbezeichnung", "Verzeichnisbezeichnung")
    8. dgv.Columns.Add("SpVerzeichnispfad", "Verzeichnispfad")
    9. For i = 0 To dgv.Columns.Count - 1
    10. dgv.Columns(i).Width = 125
    11. Next
    12. End Sub
    13. Private Sub bntVerzeichnisbezeichnungBearbeiten_Click(sender As Object, e As EventArgs) Handles bntVerzeichnisbezeichnungBearbeiten.Click
    14. Verzeichnisbezeichnungen.ShowDialog()
    15. End Sub
    16. Private Sub btnDateipfad_Click(sender As Object, e As EventArgs) Handles btnDateipfad.Click
    17. If OpenFileDialog1.ShowDialog = DialogResult.OK Then
    18. txtTextBox1.Text = OpenFileDialog1.FileName
    19. End If
    20. End Sub
    21. Private Sub btnAnlegen_Click(sender As Object, e As EventArgs) Handles btnAnlegen.Click
    22. Me.dgv.Rows.Add(txtTextBox1.Text)
    23. End Sub
    24. Private Sub dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellContentClick
    25. index = e.RowIndex
    26. Dim selectedRow As DataGridViewRow
    27. selectedRow = dgv.Rows(index)
    28. txtTextBox1.Text = selectedRow.Cells(0).Value.ToString()
    29. End Sub
    30. End Class
    Mit diesem Code kommt aber in der 1. DGV-Spalte sauber der Dateipfad raus, wie gewollt. Also nix mit "TextBox". Wo ist also das aktuelle Problem?

    btw: Zeile#17 riecht verdächtig nach Nichtinitialisierung, da Verzeichnisbezeichnungen offensichtlich keine Klassenvariable ist. Schau mal hier vorbei: Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    CE-Benennung ist anfänglich gut, nur "txtTextBox1" ist inkonsequent.
    Wozu hast Du in Zeile#2 die Index-Variable, wenn Du sie nur in der Sub ab Zeile#30 brauchst? Wozu hast Du sie in jener Sub überhaupt?
    Warum fügst Du in der Load-Sub DGV-Spalten hinzu, wenn Du das schon im Designer machen kannst? Da kannst Du auch ne automatische Spaltenbreitenanpassung an den späteren Inhalt durchführen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Alles klar, vielen Dank.

    Zeile#17 aber es funktioniert so wie ich es möchte :D wo genau unter dem Link finde ich den genauen Punkt den du ansprichst?
    "txtTextBox1" habe ich jetzt abgeändert in "txtDateipfad".
    Zeile#2 war unnötig und nicht im Private Sub, habs selbst gerade gesehen.
    Danke, hab ich jetzt so gemacht.

    Nochmal zu der zweiten Frage zurück zu kommen:
    Ich würde ganz gerne in die 3. Spalte erst schreiben können ohne das ich einen anderen Wert verändere. Anhand diesem, oder einem ähnlichen codes: Me.dgv.Rows.Add( , ,txtTextBox1.Text) ...so in etwa

    adnanche schrieb:

    ... "txtTextBox1" habe ich jetzt abgeändert in "txtDateipfad".

    Der Name beschreibt aber nicht, um was es sich handelt und Deutsch-Englisch-Mix ist auch nicht so optimal.
    In diesem Fall, ist es ja eine TextBox, das sollte im Namen ersichtlich sein.
    z.B. TextBoxFilePath, oder txbFilePath, ...
    @adnanche: Alternativ zu Murdocs Vorschlag kannst Du auch ne leere Row anlegen und die Werte seperat setzen:

    VB.NET-Quellcode

    1. dgv.Rows.Add()
    2. 'und später
    3. dgv.Rows(dgv.RowCount - 1).Cells(2).Value = txtFilePath.Text
    4. 'oder
    5. dgv.Item(2, dgv.RowCount - 1).Value = txtFilePath.Text
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.