www.mikrocontroller.net

Forum: PC-Programmierung DataGridView aktualisieren in VB.NET


Autor: Enrico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich schreibe gerade eine WindowsForms-Anwendung mit MS Visual Basic 2008 
Express.
Das Programm bekommt Werte von einem Com-Port und schreibt Sie in eine 
DataTable, die an ein DataGridView gebunden ist. Soweit so gut. Trifft 
ein Datensatz ein, werden die Werte nach eintreffen des letztes Bytes 
korrekt in eine neue Zeile der DataTable geschrieben.
Im GridView werden die neuen Zellen aber erst sichtbar, wenn die Daten 
im GridView über einen Klick auf einen ColumnHeader neu sortiert werden. 
Außerdem werden Zellen dargestellt, die sich außerhalb des sichtbaren 
Bereiches befanden und durch verschieben des ScrollBar (wieder) sichtbar 
werden.
Wenn die Routine, welche die neue Zeile erstellt, nicht durch das letzte 
Datenbyte ausgelöst wird, sondern manuell durch einen Button, dann 
funktioniert alles einwandfrei. Beide Varianten führen exakt den 
gleichen Code aus.

Hier mal ein paar Code-Teile:

    Dim values As New DataTable
    values.Columns.Add("Spalte1")
    values.Columns.Add("Spalte2")
    ...
    values.Columns.Add("LetzteSpalte")
    DataGridView.DataSource = values

    values.Rows.Add(New Object() {CStr(Wert1), _
                                  CStr(Wert2), _
                                  ...
                                  CStr(LetzterWert)})

Die Methoden Refresh und Update haben keine Wirkung. Früher hab ich mal 
mit Borland Delphi programmiert. Dort gab es Methoden wie Repaint oder 
Redraw. Ich denke sowas könnte helfen, ich habe aber nichts dergleichen 
in vb.net gefunden.

Hoffe hier kann mir jemand helfen. Habe bereits unzählige Beiträge in 
diversen foren gelesen, die mir aber nicht weiter geholfen haben.

MfG, Enrico

Autor: Sabine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Move Last
Move Current

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/st...

Vielleicht hilft es, oder dir ist es bekannt?

Autor: Sabine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke schau mal unter den Funktionen mit
DBGrid.Refresh nach.

Den Cursor bewegt man im Grid-Feld mit .Move Last bis zum letzen
Datensatz hin. Bzw. .Move End.

Autor: Enrico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei vb-fun bin ich nicht fündig geworden.
wo sind denn diese .move-anweisungen zu finden?

habe das problem vorerst mit

DataGridView.Invalidate()
Me.ValidateChildren()

gelöst. scheint mir aber für mein kleines problem eine ziemlich pompöse 
lösung zu sein.

Autor: Enrico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Ursache für das Problem war, dass die Bearbeitung der 
zugrundeliegenden DataTable und damit wohl auch die Aktualisierung des 
DataGridView nicht in dem Thread erfolgte, der das DataGrifView erstellt 
hat.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.