2009-05-04 10 views
0

Ich habe eine sehr einfache Form mit dem kompakten Framework. Ich habe zwei Suchfelder eine Suchschaltfläche und ein Datagrid. Die Schaltfläche legt die DataSource für ein DataGrid auf dem Formular fest. Ich weiß, dass ich die Höhe und Breite auf dem DataGrid festlegen kann, aber ich möchte nicht, dass der Benutzer die Bildlaufleisten auf dem DataGrid verwenden muss, da es ein paar hundert Datensätze hat. Ich möchte nur, dass der Benutzer die Bildlaufleiste im Formular zum Scrollen verwendet. Wie erreiche ich das?Datagrid Scrollen in Windows Mobile Weg, um Rollbalken loszuwerden?

Antwort

0

Ich gehe davon aus, dass das gewünschte Verhalten für eine vertikale Bildlaufleiste, die die gesamte Höhe des Formulars erstreckt, durch die Datensätze der DataGrid navigieren. Diese DataGrid belegt nicht den gesamten Platz auf dem Formular.

Sie könnten ein VScrollBar an der Seite des Formulars hinzufügen und sein Maximum auf die Gesamtzahl der Zeilen Ihres DataGrid setzen. Dann an das Ereignis ValueChanged der Bildlaufleiste anhängen und die ausgewählte Zeile Ihres DataGrid manipulieren. Dies würde in der Tat das Scroll-Verhalten des DataGrid nachahmen.

Der schwierige Teil ist das Verbergen der Bildlaufleiste des DataGrid, da es keine Eigenschaft gibt, es zu verbergen. Sie können seine Breite erweitern, sodass die Bildlaufleiste außerhalb des Bildschirms angezeigt wird. Denken Sie jedoch daran, die AutoScroll -Eigenschaft des Formulars auf false zu setzen, damit keine horizontale Bildlaufleiste angezeigt wird, die den DataGrid-Kludi anzeigt.

Basierend auf Ihrer Anwendung möchten Sie möglicherweise die Verwendung einer ListView mit der View-Eigenschaft auf Details festgelegt. Die ListView ist im kompakten Framework viel einfacher zu manipulieren und könnte besser zu Ihrer Anwendung passen. Sie können immer noch die gleiche VScrollBar Technik oben verwenden und sie auf die ListView anwenden, wenn Sie es wünschen.

+0

Ihre Annahme ist ein bisschen falsch. Ich möchte den Forms AutoScroll verwenden und die Bildlaufleiste DataGrids ausblenden. Das DataGrid bringt mehr als 700 Datensätze zurück, so dass es mehr als den gesamten sichtbaren Bereich des Formulars beansprucht. Vielleicht muss ich herausfinden, wie viele Zeilen im Datagrid sind und wie groß das in Pixeln wäre, und die datagrids-Eigenschaft height auf Zeilen * Pixel pro Zeile setzen. Irgendwelche Ideen (Ich bin mir nicht sicher, wie ich herausfinden soll, wie viele Zeilen es gibt) –

0

Sie müssen die rowcount aus der DataSource abrufen. Wirf ihn wie dem beiliegenden Beispiel die Zeilenanzahl zu erzeugen: (rsMissingItems ist ein SqlCeResultSet Objekt)

Dim intRecCnt As Int32 = DirectCast(rsMissingItems.ResultSetView, ICollection).Count