1. Ce code est le corps principal du traitement des chaînes trop longues ;
void ItemDataBound (expéditeur de l'objet, DataGridItemEventArgs e)
{
// Récupère la chaîne à afficher
string title = GetTheString();
// Renvoie le texte mis à jour pour la colonne spécifiée
string newText = AdjustTextForDisplay (titre, 1, grille);
// Définit le texte, y compris l'info-bulle si nécessaire
e.Item.Cells[1].Text = newText;
}
2.La fonction de la fonction AdjustTextForDisplay(string,int,DataGrid) est d'intercepter la chaîne trop longue en fonction de la largeur de la colonne ;
Ce qui doit être noté ici, c'est que les propriétés Font et Columns[colIndex].ItemStyle.Width de DataGrid doivent se voir attribuer des valeurs. Si aucune valeur n'est attribuée, la fonction utilisera la valeur par défaut du système. Si elle n'est pas gérée, la fonction lèvera une exception.
chaîne AdjustTextForDisplay (texte de chaîne, int colIndex, grille DataGrid)
{
// Calcule les dimensions du texte avec la police actuelle
SizeF textSize = MeasureString(texte, grille.Font);
// Comparez la taille avec la largeur de la colonne
int colWidth = (int) grid.Columns[colIndex].ItemStyle.Width.Value;
si (textSize.Width > colWidth)
{
// Récupère les pixels excédentaires
int delta = (int) (textSize.Width - colWidth);
// Calcule la largeur moyenne des caractères (environ)
int avgCharWidth = (int) (textSize.Width/text.Length);
// Calcule le nombre de caractères à couper pour rester dans la largeur fixe (environ)
int chrToTrim = (int) (delta/avgCharWidth);
// Récupère la sous-chaîne appropriée + les points de suspension
// Coupez 2 caractères supplémentaires (environ) pour faire de la place aux points de suspension
string rawText = text.Substring(0, text.Length-(chrToTrim+2)) + "";
// Format pour ajouter une info-bulle
chaîne fmt = "{1}" ;
return String.Format(fmt, texte, rawText);
}
renvoyer du texte ;
}