2 ضمیمه
اشکال در قسمت سلکشن در Datagridview
با سلام
من یه برنامه با 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
نقل قول: اشکال در قسمت سلکشن در Datagridview
سلام
به این صورت تکمیلش کنید
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;
}