Autor Beitrag
LocalDeeJay
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Windows XP, Windows Vista Ultimate
C/C++ (VS6.0, VS 2005), C# (VS 2005) , PHP (Adobe Dreamweaver CS3, Apache)
BeitragVerfasst: Di 26.02.08 20:17 
Hallo liebe Community,

bis eben habe ich verzweifelt an den ListView Methoden rumgespielt - aber so langsam vergeht mir die Lust daran.

Ich hab einen ListView, in dem viele Einträge sind. Mehr wie 1000 Items. Das Anzeigen funktioniert einwandfrei. Jedoch hab ich einen kleinen Schönheitsfehler den ich gerne entfernen würde. Lade ich die Datenbank erneut in das ListView, baut sich der Balken auf der rechten Seite auf, bzw. zieht sich zusammen und fügt langsam die Items hinzu. Nun hätte ich gerne, dass das ListView quasi verschwindet. Jedoch nicht alles - das wäre zu einfach. Ich hätte gerne das man das ListView, sowie alle Spalten sieht. Die Einträge sollen jedoch nur einmal schnell hineingezeichnet werden.
Mir ist der Anschein, dass der Inhalt des ListViews nach jedem eintragen erneut gezeichnet wird und das Bild deshalb flackert?!
Kann mir jemand helfen?
Hier ist der Code, mit dem ich das ListView aktualisiere:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
        private void drawListViewSearchInformations(SqlDataReader dataReader)
        {
            try
            {
                this.mediathekListView.Select();
                this.mediathekListView.Clear();

                this.getColumn();

                while (dataReader.Read())
                {
                    ListViewItem listViewItem = this.mediathekListView.Items.Add(dataReader["IDTrack"].ToString());
                    listViewItem.SubItems.Add(dataReader["track"].ToString());
                    listViewItem.SubItems.Add(dataReader["title"].ToString());
                    listViewItem.SubItems.Add(dataReader["artist"].ToString());
                    listViewItem.SubItems.Add(dataReader["album"].ToString());
                    listViewItem.SubItems.Add(dataReader["comment"].ToString());
                    listViewItem.SubItems.Add(dataReader["genre"].ToString());
                    listViewItem.SubItems.Add(dataReader["year"].ToString());
                    listViewItem.SubItems.Add(dataReader["tracklength"].ToString());
                    listViewItem.SubItems.Add(dataReader["tracklocation"].ToString());
                    listViewItem.SubItems.Add(dataReader["trackvolume"].ToString());
                    listViewItem.SubItems.Add(dataReader["tagversion"].ToString());
                    listViewItem.SubItems.Add(dataReader["samplingrate"].ToString());
                    listViewItem.SubItems.Add(dataReader["channelmode"].ToString());
                    listViewItem.SubItems.Add(dataReader["layerversion"].ToString());
                    listViewItem.SubItems.Add(dataReader["bitrate"].ToString());
                }
                this.mediathekListView.Update();
                dataReader.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

_________________
Thomas Müller
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 26.02.08 20:29 
Hallo!

Rufe am Anfang des Hinzufügens einmal mediathekListView.BeginUpdate(); auf und wenn alle Items drin sind mediathekListView.EndUpdate();

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
LocalDeeJay Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Windows XP, Windows Vista Ultimate
C/C++ (VS6.0, VS 2005), C# (VS 2005) , PHP (Adobe Dreamweaver CS3, Apache)
BeitragVerfasst: Di 26.02.08 20:37 
Waahhh, ich bin so doof...
Hät ich auch selbst sehen müssen!?! Aber verdammt, des ist ja richtig schnell.
Dann sag ich mal wieder Danke Mr. S. =) und hier ist der Code falls sich darunter nun niemand was vorstellen kann...

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
        private void drawListViewSearchInformations(SqlDataReader dataReader)
        {
            try
            {
                this.mediathekListView.BeginUpdate();
                this.mediathekListView.Clear();

                this.getColumn();

                while (dataReader.Read())
                {
                    ListViewItem listViewItem = this.mediathekListView.Items.Add(dataReader["IDTrack"].ToString());
                    listViewItem.SubItems.Add(dataReader["track"].ToString());
                    listViewItem.SubItems.Add(dataReader["title"].ToString());
                    listViewItem.SubItems.Add(dataReader["artist"].ToString());
                    listViewItem.SubItems.Add(dataReader["album"].ToString());
                    listViewItem.SubItems.Add(dataReader["comment"].ToString());
                    listViewItem.SubItems.Add(dataReader["genre"].ToString());
                    listViewItem.SubItems.Add(dataReader["year"].ToString());
                    listViewItem.SubItems.Add(dataReader["tracklength"].ToString());
                    listViewItem.SubItems.Add(dataReader["tracklocation"].ToString());
                    listViewItem.SubItems.Add(dataReader["trackvolume"].ToString());
                    listViewItem.SubItems.Add(dataReader["tagversion"].ToString());
                    listViewItem.SubItems.Add(dataReader["samplingrate"].ToString());
                    listViewItem.SubItems.Add(dataReader["channelmode"].ToString());
                    listViewItem.SubItems.Add(dataReader["layerversion"].ToString());
                    listViewItem.SubItems.Add(dataReader["bitrate"].ToString());
                }
                this.mediathekListView.EndUpdate();
                dataReader.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }


Grüße Local

_________________
Thomas Müller