1. هذا الكود هو الجزء الرئيسي لمعالجة السلاسل الطويلة جدًا؛
باطلة ItemDataBound (مرسل الكائن، DataGridItemEventArgs e)
{
// احصل على السلسلة المراد عرضها
عنوان السلسلة = GetTheString();
// إرجاع النص المحدث للعمود المحدد
string newText = AdjustTextForDisplay(title, 1,grid);
// قم بتعيين النص بما في ذلك تلميح الأداة عند الضرورة
e.Item.Cells[1].Text = newText;
}
2. وظيفة وظيفة AdjustTextForDisplay(string,int,DataGrid) هي اعتراض السلسلة الطويلة جدًا وفقًا لعرض العمود؛
ما يجب ملاحظته هنا هو أن خصائص Font and Columns[colIndex].ItemStyle.Width الخاصة بـ DataGrid يجب أن يتم تعيين قيم لها. إذا لم يتم تعيين أي قيمة، فستستخدم الوظيفة القيمة الافتراضية للنظام. إذا لم تتم معالجتها، فستطرح الوظيفة استثناءً.
سلسلة AdjustTextForDisplay (نص السلسلة، int colIndex، شبكة DataGrid)
{
// احسب أبعاد النص بالخط الحالي
SizeF textSize = MeasureString(text,grid.Font);
// قارن الحجم بعرض العمود
int colWidth = (int)grid.Columns[colIndex].ItemStyle.Width.Value;
إذا (textSize.Width > colWidth)
{
// احصل على البيكسلات الزائدة
int delta = (int) (textSize.Width - colWidth);
// احسب متوسط عرض الأحرف (تقريبًا)
int avgCharWidth = (int) (textSize.Width/text.Length);
// احسب عدد الأحرف المراد قطعها للبقاء في العرض الثابت (تقريبًا)
int chrToTrim = (int) (delta/avgCharWidth);
// احصل على السلسلة الفرعية المناسبة + علامة الحذف
// قم بقص حرفين إضافيين (تقريبًا) لإفساح المجال لعلامة الحذف
string RawText = text.Substring(0, text.Length-(chrToTrim+2)) + "";
// التنسيق لإضافة تلميح أداة
سلسلة fmt = "{1}";
return String.Format(fmt, text, RawText);
}
إرجاع النص؛
}