PDA

View Full Version : حرفه ای: اشکال در قسمت سلکشن در Datagridview



__MAHNAZ__
یک شنبه 10 شهریور 1398, 10:12 صبح
با سلام
من یه برنامه با Windows form و سی شارپ نوشتم و در اون برای نمایش اطلاعات موجود در یک جدول دیتابیس از یک Datagridview استفاده میکنم . اطلاعات موجود در دیتابیس شامل مقادیر عددی و مقادیر متنی فارسی هست.
کاربر احتیاج داره که درون Datagridview ستونهای متنی رو به صورت فارسی و راست چین و ستونهای عددی رو به صورت انگلیسی و چپ چین ببینه. استفاده از فونتهایی که اعداد انگلیسی دارن به خاطر تنظیم خاصیت Right to Left در Datagridview جوابگو نخواهد بود. به همین دلیل از دستور زیر در قسمت رویداد CellPainting در Datagridview استفاده کردم:

if ((e.ColumnIndex == 6 || e.ColumnIndex == 5) && e.RowIndex >= 0)
{
Font F = new Font("Tahoma", 12);
e.PaintBackground(e.CellBounds, false);
TextRenderer.DrawText(e.Graphics, e.FormattedValue.ToString(),F, e.CellBounds, e.CellStyle.ForeColor,
TextFormatFlags.Left);
e.Handled = true;
}


با این کار مشکل نمایش اعداد حل شد ولی در هنگامی که یک خط در Datagridview به حالت انتخاب در میاد این دو ستون به حالت پیش فرض هستند و از حالت سلکشن پیروی نمی کنند. عکس زیر:

150689

محمد آشتیانی
دوشنبه 11 شهریور 1398, 18:37 عصر
سلام
به این صورت تکمیلش کنید


if ((e.ColumnIndex == 1 || e.ColumnIndex == 2) && e.RowIndex >= 0)
{
var font = new Font("Tahoma", 12);
var foreColor = e.RowIndex == dataGridView1.CurrentRow?.Index ? e.CellStyle.SelectionForeColor : e.CellStyle.ForeColor;


e.PaintBackground(e.CellBounds, true);
TextRenderer.DrawText(e.Graphics, e.FormattedValue.ToString(), font, e.CellBounds, foreColor,
TextFormatFlags.Left);

e.Handled = true;
}