Listview

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von M.Opera.

    So....

    da ich jetzt vor dem Problem stehe, mit dem ich mich seit knapp 11 Stunden rumschlage
    frage ich euch

    kann ich/ihr den code umschreiben

    Also ich hab eine Listview mit 15 Spalten
    und die 5 soll ausgerechnet werden


    Hier mal mein kompletter code : siehe Anhang...
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Ergebnis As Double = 0
    3. For Each item As ListViewItem In ListView1.Items
    4. Ergebnis = Ergebnis + CDbl(item.SubItems(5).Text)
    5. Next
    6. TextBox1.Text = Ergebnis.ToString
    7. End Sub
    8. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    9. SaveFileDialog1.ShowDialog()
    10. Dim Path As String = SaveFileDialog1.FileName
    11. Dim AllItems As String = ""
    12. Try
    13. For Each item As ListViewItem In ListView1.Items
    14. AllItems = AllItems & item.Text & "#" & item.SubItems(1).Text & "#" & item.SubItems(2).Text & "#" & item.SubItems(3).Text & "#" & item.SubItems(4).Text & "#" & item.SubItems(5).Text & "#" & item.SubItems(6).Text & "#" & item.SubItems(7).Text & "#" & item.SubItems(8).Text & "#" & item.SubItems(9).Text & "#" & item.SubItems(10).Text & "#" & item.SubItems(11).Text & "#" & item.SubItems(12).Text & "#" & item.SubItems(13).Text & "#" & item.SubItems(14).Text & "#" & item.SubItems(15).Text & vbNewLine '& "#" & item.SubItems(16).Text
    15. Next
    16. AllItems = AllItems.Trim
    17. Catch ex As Exception
    18. End Try
    19. Try
    20. If My.Computer.FileSystem.FileExists(Path) Then
    21. My.Computer.FileSystem.DeleteFile(Path)
    22. End If
    23. My.Computer.FileSystem.WriteAllText(Path, AllItems, False)
    24. Catch ex As Exception
    25. MsgBox("Error" & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Error ")
    26. End Try
    27. End Sub
    28. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    29. OpenFileDialog1.ShowDialog()
    30. Dim Path As String = OpenFileDialog1.FileName
    31. Dim AllItems As String
    32. Try
    33. AllItems = My.Computer.FileSystem.ReadAllText(Path)
    34. Dim ItemLines As New TextBox
    35. ItemLines.Text = AllItems
    36. For Each line As String In ItemLines.Lines
    37. Dim a1() As String = line.Split("#")
    38. Dim ItemName As String = a1(0)
    39. Dim SubItem1 As String = a1(1)
    40. Dim SubItem2 As String = a1(2)
    41. Dim SubItem3 As String = a1(3)
    42. Dim SubItem4 As String = a1(4)
    43. Dim SubItem5 As String = a1(5)
    44. Dim SubItem6 As String = a1(6)
    45. Dim SubItem7 As String = a1(7)
    46. Dim SubItem8 As String = a1(8)
    47. Dim SubItem9 As String = a1(9)
    48. Dim SubItem10 As String = a1(10)
    49. Dim SubItem11 As String = a1(11)
    50. Dim SubItem12 As String = a1(12)
    51. Dim SubItem13 As String = a1(13)
    52. Dim SubItem14 As String = a1(14)
    53. Dim SubItem15 As String = a1(15)
    54. 'Dim SubItem16 As String = a1(16)
    55. Dim Item As New ListViewItem(ItemName)
    56. Item.SubItems.Add(SubItem1)
    57. Item.SubItems.Add(SubItem2)
    58. ListView1.Items.AddRange(New ListViewItem() {Item})
    59. Next
    60. Catch ex As Exception
    61. MsgBox("Error" & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Error ")
    62. End Try
    63. End Sub
    64. Private Sub NeuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuToolStripMenuItem.Click
    65. Form2.Show()
    66. End Sub

    In Form 2 sind eben sämtliche Textboxen... bis auf 1,2 und 3 Da soll eben das Ergebnis rein ist egal in welcher
    Hoffe ihr könnt mir helfen...
    Aber nicht den Code klauen ^^

    Danke
    Opera

    Danke Manschula :D


    Edit by Manschula: Für Code-Ausschnitte den entsprechenden Tag verwenden! --> VB-Tag eingefügt
    Dateien

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „M.Opera“ ()

    Ich hasse Datatable und wie die nicht alle heißen...

    Ich habs mal versucht (siehe anderes Thema) aber kläglich versagt...
    Mal schaun ob ich es noch mal mache ;D Ansonsten muss die Buchhaltung meines Vaters eben Per Kopf/Taschenrechner aus rechnen xD
    Wenn Form2 der Name der Klasse ist, wird Dir

    VB.NET-Quellcode

    1. Form2.Show()
    nicht viel Freude machen, da Du eine VB-implizite Instanz aufrufst (das scheint ein VB-Fehler zu sein).
    Mach Dir in Deiner Klasse eine ordentliche Instanz,
    Als Anhaltspunkt dies (fehlt noch was), such mal nach nicht modalem Dialog.

    VB.NET-Quellcode

    1. Private dlg As Form2
    2. dlg = New Form2
    3. dlg.Show()
    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!
    Also ich kann @EDR nur zustimmen. Dein komplettes Codegeschnipsel würde sich auf wenige selbstgeschriebene Zeilen reduzieren. das meiste passiert mit dem Designer auf graphischer Oberfläche. Und des ist, wenn man z.B. EDR seine Beispiele 1:1 (z.B. DatasetOnly) austestet äußerst einfach. Dabei mal unbedingt die eigenen Anforderungen/Ideen vorerst vergessen und wirklich 1:1 nachmachen.
    Speichern und Lesen sind mit jeweils 1 Zeile Code zu bewerkstelligen. Und wenn dein Papa mal ne Spalte dazuhaben will: NullProblem, anders sortieren: NullProblem, Spalten verschieben: NullProblem...
    Ansonsten solltest du dich (zuminsdest während der Entwicklungsphase) von diesem unsäglichen Try/Catch-Gedöns verabschieden. Try/Catch nur da, wo unvermeidbare Fehler auftreten können. Alles andere sollte der Code abfangen und entsprechend reagieren. Und während der Entwicklung solltest du für jede auftretende Ausnahme dankbar sein, weil die dir die Dinge aufzeigen, die später der DAU benutzt, um dein Proggi zum Absturz zu bringen ;)

    Zu deiner Frage:
    Wo steht die? Willst du wissen, wie du auf die Textboxen von Form2 zugreifen kannst?
    Dazu: Wie Rod sagt >> nicht modaler Dialog (Aufruf mit Using-Block und Showdialog) und Zugriff mit InstanzFonVorm2.TextboxXY.Text=CStr(DeineinzutragendesErgebnis)

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Hier mal ein Foto wie ich es meine

    "img3.fotos-hochladen.net/uploads/12345648151uocshik4j5.jpg "


    Die Zeilen werden ja eingefügt ohne Probleme nur die "€" spalte muss berechnet werden.
    Also die Preise die dort eingegeben werden müssen zusammengerechnet werden und in einer der 3 Textboxen eingefügt werden ...

    PS. Ich kapier nur 2 % von dem was ihr da gesagt hab

    EDR ? Was ist das

    Nein den Code hab ich zum größtenteil aus einem Tutorial, ich guck mir gerne tuts an, sonst wär ich noch immer da wo ich war nämlich bei der Leeren Form1 ;D

    Kann man den Code um schreiben so das dieser auf für eine DGV funzt ?
    Ich versuche ohne i.welchen Datenbanken zu arbeiten da ich das nicht Kapier...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „M.Opera“ ()

    M.Opera schrieb:

    EDR ? Was ist das
    das bin ich :)
    Kann man den Code um schreiben so das dieser auf für eine DGV funzt ?
    Nein - dassis halt das holzwegige am Listview, dass man den Ansatz iwann komplett in die Tonne tritt.

    Ich versuche ohne i.welchen Datenbanken zu arbeiten da ich das nicht Kapier...
    die in post#2 angegebenen Tuts gehen alle ohne Datenbanken.

    SystemUnknow schrieb:

    In Labels/TextBoxen Werte aus Form1 in Form2 anzeigen, würde ich mit Module oder Klassen lösen (OOP).
    Aber keine Gurkencode einsetzen wie z.b:

    VB.NET-Quellcode

    1. Form2.TextBox.Text = Me.ListView.Text 'oder etc...
    Keine Gurkencode's ? ;(
    Bisher bin ich immer gut damit rum gekommen ;)

    ErfinderDesRades schrieb:

    Zitat
    die in post#2 angegebenen Tuts gehen alle ohne Datenbanken.

    Ich hab aber leider keine vorgegebenen Daten... Also das DGV müsste komplett lehr bleiben :S Aber das mit dem Save/Load gehe ich mal genauer an ;D

    Außerdem weiß ich nicht ob das so geplant ist... Aber als ich aus jucks mal die 46 entfernt hab (Debuggin) hat er eine Fehlermeldung aufgeploppt und ein "default" erstellt...


    Edit:

    Ich hab die Ultimative Lösung gerade gefunden :thumbsup: Ich nehm einfach ein ListView und ein DGV :thumbsup: Das DGV zwecks dem "€-Betrag" und das ListView für den Daten 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „M.Opera“ ()