RTB an DGV und zurück

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

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von toto.

    RTB an DGV und zurück

    Hallo ich schon wieder,

    ich möchte eine Spalte von DGV in eine RichtextBox kopieren, berbeiten und im DGV zurück schreiben.

    Habe schon was versucht vom DGV ins RTB:

    VB.NET-Quellcode

    1. Dim mylist As New List(Of String)
    2. For i = 0 To DataGridView2.RowCount - 2
    3. mylist.Add(DataGridView2.Rows(i).Cells(0).Value.ToString)
    4. Next
    5. For Each item In mylist
    6. Form3.uclAccordsSrc.txtAccords.AppendText(item.ToString)
    7. Next


    damit werden mir die Daten im RTB in Sätze geschrieben.

    und mit:

    VB.NET-Quellcode

    1. Form3.uclAccordsSrc.txtAccords.Text = (item.ToString)

    wird mir nur der lezte item vom DGV in RTB geschrieben.

    Es ist evtll. so das der RTB nicht in Spalte (in meinem Fall eine Spalte) wiedergeben kann?
    für Hilfe wäre ich dankber


    @toto Erledigt
    lg toto

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „toto“ ()

    toto schrieb:

    VB.NET-Quellcode

    1. Form3.uclAccordsSrc.txtAccords.Text = (item.ToString)
    Ist Form3 der Name der Klasse oder der Name der Instanz?
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Warum editierst Du den Text nicht im DGV selbst? Ist der zu lang?
    ====
    Wenn es erledigt ist, poste vielleicht Deine Lösung, falls ein anderer das selbe Problem hat.
    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!
    @RodFromGermany
    Warum editierst Du den Text nicht im DGV selbst? Ist der zu lang?


    Ich habe mich dafür entschieden, im DGV den Text zu editieren,
    DGV ist Dataset gebunden und lässt den Text in DGV nicht ändern, Ich muss wohl im Dataset selbst zugreifen,
    Dataset laden, daten editieren, im datadet wieder speichern
    dabei bin ich jetzt
    lg toto

    toto schrieb:

    DGV ist Dataset gebunden und lässt den Text in DGV nicht ändern,
    Das ist nicht so.
    Wenn Du den Text im DGV änderst, steht er automatisch in der DataTable, die kannst Du dann speichern.
    ====
    Was ist hier mit?
    Ist Form3 der Name der Klasse oder der Name der Instanz?

    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!
    Form3

    der Name der Klasse wo das UserControl ist

    Ich habe jetzt zwei DGV, im DGV1 werden die Daten aus dem Dataset dargestellt
    im DGV2 werden diese Daten geändert und wenn ich sie wieder im DGV1 zurück scheiben will
    kommt die Meldung " die Daten in DGV1 können nicht gelöscht werden

    Ich denke evtll. Oberfläche orientiert und nicht Dataset orientiert

    und hier fehlen mir Kenntnisse
    @'toto' Dataset laden, daten editieren, im datadet wieder speichern
    lg toto
    @toto Mach Dir ein neues Projekt.
    Form, 2 Button, DataGridView.
    Da kommt ein DGV mit einer Spalte.
    Schreib ein paar Zeilen voll und drück dann Button1: => Speichern nach C:\Temp\test.xml
    Starte das Programm neu und drück Button2: => Laden von C:\Temp\test.xml
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private MyTable As DataTable
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Me.MyTable = Me.InitDataTable()
    5. Me.DataGridView1.DataSource = Me.MyTable
    6. End Sub
    7. Private Function InitDataTable() As DataTable
    8. Dim table = New DataTable("TestDaten")
    9. table.Columns.Add(New DataColumn("Text", GetType(String)))
    10. Return table
    11. End Function
    12. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    13. Me.MyTable.WriteXml("c:\Temp\test.xml")
    14. End Sub
    15. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    16. Try
    17. Me.MyTable.ReadXml("c:\Temp\test.xml")
    18. Me.DataGridView1.DataSource = Me.MyTable
    19. Catch ex As Exception
    20. MessageBox.Show("no or wrong data available")
    21. End Try
    22. End Sub
    23. End Class
    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!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    nein

    scheint eher dran zu liegen, dass du was ganz anneres gemacht hast als was RFG gesagt hat.
    Mach doch einfach mal, was er gesagt hat.

    post#6, und nur post#6.
    Von Anfang bis ende - den dort gegebenen Code kannste ja einkopieren - ich hoffe, du findest die Stelle, wo er hinmuss (wenn du gemacht hast, was er sagtete).
    Ansonsten nachfragen.
    Dann kann das Problem von wegen Me.InitData() nicht auftreten, denn von Me.InitData() ist in post#6 an keiner Stelle die Rede.

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

    habe verstanden:
    Die Klasse wo das Control sich befindet
    also Private Classe Form3

    sorry, misverstanden
    also eine Instanz

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private MyTable As DataTable
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Me.MyTable = Me.InitDataTable()
    5. Me.DataGridView1.DataSource = Me.MyTable
    6. End Sub
    7. Private Function InitDataTable() As DataTable
    8. Dim table = New DataTable("TestDaten")
    9. table.Columns.Add(New DataColumn("Text", GetType(String)))
    10. Return table
    11. End Function
    12. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    13. Me.MyTable.WriteXml("c:\Temp\test.xml")
    14. Me.InitData()
    15. End Sub
    16. Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
    17. Try
    18. Me.MyTable.ReadXml("c:\Temp\test.xml")
    19. Me.ShowData()
    20. Catch ex As Exception
    21. MessageBox.Show("no or wrong data available")
    22. End Try
    23. End Sub
    24. End Class

    das ist der Code den ich reinkopiert habe
    und wenn du sagst ist von nichts die Rede, dann sag mir bitte wo die herkommen

    Habe gerade gemerkt das @RodFromGermany sein Code editiert hat
    lg toto

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „toto“ ()

    toto schrieb:

    sind kein Member von Form1
    Jou, ich hatte den Code inzwischen korrigieert.
    Der macht ganz genau, was er soll.
    Teste das bitte mit einem neuen Projekt :!:
    Da gibt es wegen einer Form3 keinerlei Missverständnisse.
    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!
    hi Rod
    habe bereit ausprobiert und klar funzt.

    Das heißt ich muss die Daten in eine zweite Datatable (MyTable) aufrufen verändern und zwischenspeichern
    dann wieder aufrufen
    ist das zwischenspeichern notwendig?
    lg toto

    toto schrieb:

    zwischenspeichern
    Wieso?
    Wo kommt das her?
    Mach es doch genau so wie in meinem Beispiel.
    Selbstredend kannst Du der DataTable weitere Spalten nach Deinem Bedarf hinzufügen.
    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!
    ähm - ich würde vorschlagen, du formulierst erstmal was dein Projekt eigentlich ist.
    Ich hab den Eindruck, du wollest eine Datenverarbeitung schaffen, eine Art Sammlung von Liedern und ihrer Begleitakkorde.
    Das ist kinderleicht, wenn man es richtig anfasst.
    Wenn du aber Strings von einem DGV in ein UCL und zurück transportierst, dann ist das sicherlich falsch angefasst - egal was du eiglich vorhast.
    Daher formuliere mal, was du vorhast mit deim Projekt.
    Sammlung von Lieder habe ich schon Siehe erste Bild 1
    Begleitakkorden habe ich schon Siehe Bild 2

    Im ersten DGV von Bild 2 sind die Begleitakkorden für das ausgesuchtes Lied.

    Jetzt sollen diese Begleitakkorden Transponiert werden daher meine idee anstatt 2 UCL, 2 DGV zu nehmen.

    Lass dich nicht irritieren vom Rest es funzt alles und die Form sieht zum schluss wie im Bild 3 aus

    Im Bild4 siehst du wie mit deinem Transposer die Daten in DGV2 in C# transponiert sind.

    Ich bekomme mit dem Code von @RodFromGermany die Daten vom DGV2 nicht ins DGV1 damit die Labels sich aktualisieren.
    Meldung: an einen gebunden DGV kann man nicht Daten ersetzen
    Ich hoffe das mit dem Bilder ( die mehr als 1000 Wörter Sagen) genugend Info gegeben
    Bilder
    • 1.png

      31,25 kB, 624×697, 40 mal angesehen
    • 2.png

      60,28 kB, 951×691, 41 mal angesehen
    • 3.png

      39,86 kB, 624×689, 47 mal angesehen
    • 4.png

      72,17 kB, 1.001×699, 42 mal angesehen
    lg toto

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

    @toto Dein Problem ist wahrscheinlich, dass Du alles auf ein Mal machen willst.
    So funktioniert das nicht, insbesondere nicht bei Dir, der Du kein professioneller Softwareentwickler bist.
    Wenn Du ein neues Teilproblem hast, löse dieses zunächst in einem neuen Projekt.
    Da kannst Du alle Facetten des Problems dran untersuchen und implementieren.
    Wenn Du damit fertig bist, kommentiere das Projekt sorgfältig und speichere es in Deiner Snippet-Sammlung.
    Dann integrierst Du es in Dein Hauptprogramm.
    Wenn Du jetzt sagst "Das geht aber nicht", dann ist Dein Projekt nicht gut strukturiert.
    Programmiere so, dass das ganze funktioniert.
    Irgendwann freust Du Dich darüber, wie einfach es dann ist, ein neues Feature zu implementieren.
    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!
    @RodFromGermany
    Sorry war nicht an dich direkt, habe versucht @ErfinderDesRades zu erklären mein Vorhaben.

    Dein Code ist bereits in meine Snippet Sammlung
    Ich bin dabei dein Code in mein Hautprogramm zu integrieren und in einem Punkt hast du Recht:
    Ich muss dein Code erweitern mit eine kleine symulation vom mein Programm
    Mein Fehler war nur dein Programm auszuprobiere.
    Irgendwann freust Du Dich darüber, wie einfach es dann ist, ein neues Feature zu implementieren.

    Darauf freue mich wirklich
    LG
    lg toto