Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  VB.NET 2010: Datagridview und Scrollbar

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  VB.NET 2010: Datagridview und Scrollbar (4849 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 28. Sep. 2010 14:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich bins schon wieder, ist schon fast peinlich...

Ich habe in meiner Form mehrere 4 DataGridViews, verteilt 4 Tabs eines Tabcontrols.

Grundsätzlich bin ich voll begeistert von DataGridviews mit ihren vielen Möglichkeiten, auch wenn die anfangs schwer in den Griff zu kriegen sind.
Aber jetzt hab ich mal wieder seltsamen Effekte:

  • 3 der 4 DGVs haben vertikale Scrollbars, 2 davon auch horizontale.

  • Alle DGVs werden vor dem Befüllen mit .Rows.Clear() geleert.

  • Nach dem ersten Befüllen sind die Scrollbars von DGV1 und DGV2 ok, der Scrollbar von DGV4 hat keinen Schiebebalken, obwohl die DGV4 mehr Zeilen hat, als in den sichtbaren Bereich passen. Scrollen lässt sich hier nur per Tastatur. (DGV3 ist hier nicht betroffen, da sind zu wenig Daten drin)

  • Wenn die DGVs zur Laufzeit neu befüllt werden, dann hat nur noch die DGV einen Schiebebalken, die zu diesem Zeitpunkt oben ist (ausgewählter Tab),also sichtbar. Anderen DGVs haben keine Schiebebalken mehr in der Scrollbar, bzw. die Scrollbar ist dort vorhanden, aber disabled.

  • Der Schiebebalken in der sichtbaren DGV entspricht nicht dem tatsächlichen Inhalt, mit dem lässt sich nur ein Teil der DGV durchscrollen.

  • auch wenn eine DGV unsichbar und anschließend wieder sichtbar gemacht wird, sind die Schiebebalken verschwunden.

  • Das gleiche Problem haben auch die waagerechten Scrollbars!

   
Hat vielleicht jemand ne Idee, woran sowas liegen könnte?

[EDIT]
Hier kommt ein Workaround:
Bei jedem Betreten der Tab bzw. Wechsel der Eigenschaft visible des DGVs wird die Eigenschaft Scrollbars auf none und dann gleich wieder auf both oder vertical gesetzt, damit wird die Scrollbar jedesmal wieder neu und richtig aufgebaut:

Code:
  Private Sub dgvRFData_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgvRFData.VisibleChanged
        If dgvRFData.Visible Then
            dgvRFData.ScrollBars = ScrollBars.None
            dgvRFData.ScrollBars = ScrollBars.Vertical
        End If
    End Sub

    Private Sub tpRFData_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpRFData.Enter
        dgvRFData.ScrollBars = ScrollBars.None
        dgvRFData.ScrollBars = ScrollBars.Vertical
    End Sub


Nicht schön, aber bisher meine einzige funktionierende Lösung.
Eine richtige Lösung wäre mir natürlich lieber.[/EDIT]
------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim    

[Diese Nachricht wurde von KMassler am 28. Sep. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 07. Okt. 2010 08:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hi, Klaus!

Wenn das DGV-Objekt die Methode REFRESH hat, könntest Du es damit versuchen.
(Habs nicht ausprobiert)

... ich habe auch bei einem Programm das genau gleiche Problem!  Und nur bei EINEM Programm! 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 04. Apr. 2011 15:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Fast hätt ichs vergessen: Refresh bringt hier nix.

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 04. Apr. 2011 16:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Tust Du das mit dem Backgroundworker füllen?
Ich habe da eine Anwengung wo ich den BGWorker benutze und da funkt es wunderbar...! Vielleicht auch nur Zufall   

------------------
 
http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 05. Apr. 2011 08:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Backgroundworker? 
What's this?


Nee, die werden ganz konventionell beim Programmstart mit Daten gefüllt. In meinem Fall kommen die aus ner Datenbank, könnten aber gerade so gut aus irgendeiner Datei eingelesen werden.

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 05. Apr. 2011 08:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich


BGWorker.jpg

 
Den Backgroundworker kann eben in einem anderen Thread das Formular aktualisieren. Der macht genau solche Sachen alles etwas schneller!
Z.B. kann ich währen dem Hauptprozess das Formular anpassen (Auszug aus Sub):

Code:

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        Try
            Select Case report_this
                Case "DataGrid"
                    Dim new_fs_info_arr() As String = Split(e.UserState, ",")

                    If new_fs_info_arr.Count > 5 Then
                        DataGrid.Rows.Add(False, DirectoryToDisplay, new_fs_info_arr(1), new_fs_info_arr(2), new_fs_info_arr(3), new_fs_info_arr(4), new_fs_info_arr(5))
                    End If
                Case "DirTotalSize"
                    Me.Directory_Size.HeaderText = e.UserState
            End Select

        Catch ex As Exception
            MsgBox(ex.StackTrace)
            MsgBox(ex.Message)
        End Try
    End Sub


DataGrid.Rows.Add() wird im "Hintergrund" gemacht. Verzögert also den Hauptprozess (BackgroundWorker1_DoWork) nicht.
Ich aktualisiere meine Formulare fast nur noch so. Wenn Du etwas geschickt bist, kannst Du so auch Deine Prozesse parallelisieren.

Arbeite Dich mal in den Backgroundworker hinein! Es lohnt sich!

------------------
 
http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 05. Apr. 2011 08:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Muss ich mir mal anschaun.

In meinem diesem Fall wäre das im Hintergrund akualisieren wohl eher ungeschickt, da die Daten erst vollständig geladen sein müssen, bevor der Anwender irgendwas tun darf...der Zeitgewinn bringt mir also nix.

Aber für manch andere Fälle wäre das sicher hilfreich, ich werde es mir mal zu Gemüte führen, danke für den Tipp.

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GDawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 05. Apr. 2011 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Ah, ok!
Dann machst Du das eben nicht im Sub BackgroundWorker1_ProgressChanged, sondern im Sub BackgroundWorker1_RunWorkerCompleted 
Da kannst Du auch eine Meldung herausgeben, dass der Prozess abgeschlossen ist, Formular zurückstellen, Knöpfe aktivieren etc...

------------------
 
http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 05. Apr. 2011 09:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das  erschlägt mich jetzt erst mal, da muss ich mich in Ruhe damit befassen.
Vielen Dank soweit 

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz