Legen Sie die Spaltenbreite in einem DataGrid mithilfe von Compact Framework fest

8

Ich versuche, die Breite der Spalten in meinem Datagrid festzulegen. Ich benutze Compact Framework 2.0 und C #

Ich habe das versucht, aber es gibt mir eine Fehlermeldung "out of bonds":

%Vor%

Hier ist der Code zum Füllen meines Datagrids mit der Datentabelle (scheitert nur, wenn ich versuche, die Spaltenbreite einzustellen):

%Vor%     
rfc1484 26.07.2011, 11:50
quelle

3 Antworten

19

Probieren Sie diesen Code:

%Vor%     
Reniuz 26.07.2011, 12:20
quelle
2

DataGrid ist jetzt veraltet, aber ich habe das gleiche Problem beim Ändern von Legacy-Code festgestellt, also werde ich meine Lösung veröffentlichen.

Das Problem ist, dass DataGrid ein privates Feld namens

hat myGridTable , das die aktuelle DataGridTableStyle enthält. Ein aktuelles DataGridTableStyle existiert auch dann, wenn die TableStyles Sammlung leer ist. In diesem Fall zeigt es auf ein Standard DataGridTableStyle welches auch privat / intern ist.

Da DataGrid sowieso veraltet ist und nicht geändert wird, habe ich mich entschieden einfach zu verwenden Reflektion für den Zugriff auf diese privaten Felder . Sie hätten öffentlich sein sollen, und sie privat zu machen, war eine schlechte Design-Entscheidung, IMO.

Der Vorteil der direkten Arbeit mit den aktuellen Stilen besteht darin, dass Sie die Tabellenstile nicht einfach nur zerstören und neu erstellen müssen, um die Breite zu ändern, und es funktioniert jedes Mal ohne unerwartetes Verhalten.

Ich habe einige Erweiterungsmethoden dafür erstellt:

%Vor%     
sashoalm 03.10.2016 13:13
quelle
0

Ich verbrachte einen besseren Teil von 2 Tagen nach der Antwort oben suchen. Danke für die tollen Lösungen. Hier ist ein vb-Code mit einer Anpassung der Spaltenbreiten nach Spalten:

%Vor%     
ThePilotGuy 14.08.2014 18:51
quelle