Entwickler-Ecke
WinForms - VS2005 | DataGridView, automat. Focus auf bestimmte Zeile
dennisbz - Mi 16.05.07 19:50
Titel: VS2005 | DataGridView, automat. Focus auf bestimmte Zeile
Hallo zusammen,
erstmal vorweg: ich bin blutiger Anfänger...
Ich schreibe gerade zum Üben ein Vokabelprogramm. Dieses enthält zwei Textboxen zum
Eingeben der gesuchten Vokabel und ein DataGridView, in welches beim Start der Form
erst mal alle Vokabeln aus ner Textdatei geladen werden. Nach Eingeben des gesuchten
Wortes und Klicken auf den entsprechenden Button wird das Grid nach diesem String
durchsucht und markiert die entsprechende Zeile.
Soweit so gut. Jetzt würde ich gern den Fokus auf die entsprechende Zeile setzen lassen.
Ich habe sicher schon fast jedes Forum durchsucht... Aber leider fast nichts entsprechendes
gefunden. Dem Einzigen der das selbe Problem hat wurde vorgeschlagen die Methode 'scrollTo'
(oder so ähnlich) zu verwenden. Leider schlägt mir VS diese aber nicht vor.
Wie könnte ich das Problem lösen?
Vielen Dank schon mal im Voraus,
Dennis
JüTho - Do 17.05.07 10:30
Hallo Dennis,
verstehe ich Dich richtig, dass Du aus einer Textdatei einfache Wertepaare (z.B. in der Art "deutsch=german") hast und diese in die Zellen des DataGridView überträgst? Du hast also insbesondere
keine indizierte Datasource (z.B. DataTable, HashTable) dahinter?
Dann bleibt Dir nichts anderes übrig, als alle Zeilen durchzugehen, bis Du die passende getroffen hast; dort wird
CurrentCell neu gesetzt. Allerdings geht das mindestens bis zu 1000 Einträgen ruck-zuck (wahrscheinlich auch noch bei viel mehr Einträgen):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| MyDataGridView.SuspendLayout(); int x0 = -1; bool bTreffer; do { x0++; bTreffer = (string)MyDataGridView.Rows[x0].Cells[0].Value; } while (x0 < MyDataGridView.Rows.Count || (!bTreffer)); if (bTreffer) MyDataGridView.CurrentCell = MyDataGridView.Rows[x0].Cells[0]; MyDataGridView.ResumeLayout(); |
Direkte
Suchfunktionen nach Inhalten einzelner Zellen gibt es in DataGridView nicht; mit einer Datenquelle (s.o.) hat man es viel leichter.
Merke: In ADO.NET wird grundsätzlich zwischen den Daten (z.B. DataTable) und der Anzeige (z.B. DataGridView) getrennt. Wenn man das beachtet, wird vieles einfacher.
Viel Erfolg!
PS. Ein Blick in die
SDK-Doku unter
ScrollTo zeigt, dass es diese Methode beim DataGridView nicht gibt.
dennisbz - Do 17.05.07 12:02
Hallo JüTho,
erstaml Danke für die raschen Antwort!
CurrentCell war die Eigenschaft(?), die ich gesucht habe. Super, es klappt!
In meiner Textfile stehen einfach die Vokabeln, getrennt von einem Semikolon - mit abschließendem
Zeilenumbruch, drin. Also:
englisch;deutsch
englisch;deutsch
Ich hatte das Grid bereits nach dem gesuchten Begriff durchlaufen lassen, das Problem war das
Setzten des Focus auf die Zeile mit dem gesuchten Begriff.
Aber wie gesagt, CurrentCell ...
Nochmals Danke,
viele Grüße
Dennis
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!