PDA

View Full Version : تغییر رنگ زمینه سطر گرید ویو با قرار گرفتن اشارگر موس بر روی آن



abcd_a
پنج شنبه 16 شهریور 1391, 20:19 عصر
سلام
چه کدی تو رویداد mouse hover دیتا گریدویو بنویسیم تا موقعی که اشاره گر موس بر روی سطری از گرید ویو قرار گرفت رنگ زمینه ان تغییر کند و با رفتن موس (رویداد leave) رنگ سطر به حالت قبلی برگرده؟
با تشکر.

فرید نجفلو
پنج شنبه 16 شهریور 1391, 23:12 عصر
سلام
این کد رو تست کنید

private void dataGridView1_MouseMove(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo HitTest = dataGridView1.HitTest(e.X, e.Y);
if (HitTest.RowIndex >= 0 && dataGridView1.Rows[HitTest.RowIndex].DefaultCellStyle.BackColor != Color.Lime)
{
foreach (DataGridViewRow aRow in dataGridView1.Rows)
aRow.DefaultCellStyle.BackColor = Color.White;
dataGridView1.Rows[HitTest.RowIndex].DefaultCellStyle.BackColor = Color.Lime;
}
}

abcd_a
یک شنبه 19 آذر 1391, 15:43 عصر
سلام
دیتاگریدویوی که استفاده می کنم رنگ سطرها به صورت یکی درمیان رنگی این کد باعث تغییر رنگ سطری از دیتاگریدویو که موس بر روی ان قرار دار میشه اما رنگ قبلی اون از بین میره حالت رنگی بودن یکی درمیان سطرها از بین میره
و زمانی که موس بر بروی دیتاگرید قرار نداره رنگ یکی از سطرها به حالتی که تغییر کرده باقی می مونه
چطوری میشه این مشکلات را برطرف کرد؟
با تشکر

cccccccccc
یک شنبه 19 آذر 1391, 17:34 عصر
سلام
از رویدادهای CellMouseEnter و CellMouseLeave استفاده کنید
شرط
if (e.RowIndex == -1) return;
هم برای زمانی که اشاره گر ماوس روی هدر ستون ها میره استفاده شده که خطا نده البته طرز استفادش دیگه باخودت بسته به برنامت


Color newbackcolor=Color.Blue,
newforecolor=Color.Red,
oldbackcolor,
oldforecolor;
private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return;
oldbackcolor = dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor;
oldforecolor = dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor;

dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = newbackcolor;
dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = newforecolor;
}
private void dgv_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return;
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = oldbackcolor;
dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = oldforecolor;
}