2016-08-02 1 views
1

Je tente d'ajuster la largeur de colonne d'un DataGrid en C# pour une application Windows Mobile qui s'exécutera sur un Motorola MC55.Largeur de colonne d'un DataGrid dans une application Windows Mobile (Motorola MC55)

J'utilise le code suivant pour ce faire:

dataGrid1.TableStyles.Clear(); 
DataGridTableStyle tableStyle = new DataGridTableStyle(); 
tableStyle.MappingName = t.TableName; 
foreach (DataColumn item in t.Columns) 
{ 
    DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn(); 
    tbcName.Width = 100; 
    tbcName.MappingName = item.ColumnName; 
    tbcName.HeaderText = item.ColumnName; 
    tableStyle.GridColumnStyles.Add(tbcName); 
} 
dataGrid1.TableStyles.Add(tableStyle); 

Ce tourne bien sur le Windows Mobile 6.5.3. Émulateur professionnel. Malheureusement, il ne fonctionne pas sur le Motorola MC55.

Sur le MC55, la largeur de colonne est encore plus petite par rapport à quand je décommenter le code ci-dessus.

Pouvez-vous s'il vous plaît m'aider à obtenir ce travail sur le MC55?

Répondre

0

J'ai identifié que la taille de l'écran du Motorola MC55 était différente de la taille de l'écran de l'émulateur. J'ai donc ajouté/modifié les lignes suivantes:

int screenWidth = Screen.PrimaryScreen.Bounds.Width; 
int columnWidth = (screenWidth/3) - (screenWidth/16); 
// divided by 3 because of 3 columns 
// divided by 16 was a good fit to display the scrollbar 
DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn(); 
//tbcName.Width = 100; 
tbcName.Width = columnWidth; 

De toute façon, je ne comprends pas pourquoi le problème n'apparaît que pour ces colonnes. J'ai toujours utilisé pour spécifier la taille de beaucoup d'autres champs avec des valeurs absolues.

+0

La largeur affichée dépend également de la résolution de l'écran. Vous pouvez avoir un écran d'appareil 480x640 mais avec 192dpi ou avec 96dpi. Un pixel n'est pas un pixel. Généralement, les projets CF sont définis pour AutoScaleMode = dpi (points par pouce). – josef