PDA

View Full Version : تغیر رنگ ردیف و سلول



hamidtmu
شنبه 07 اردیبهشت 1398, 02:43 صبح
با سلام مجدد و معذرت بابت سوالای زیاد

دوستان در مورد تغیر رنگ ردیف دیتا گرید به شرط خاص زیاد صحبت شده ولی جایی ندیدم که کل ردیف ها را بررسی کنه معمولا ستون خاصی را بررسی می کردند



for (int i = 0; i < dgvp.Rows.Count; i++)
if (Convert.ToString(dgvp.Rows[i].Cells[2].Value) == "333")
{
dgvp.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}



یه سوال اینکه به جای سل 2 میخام که کلیه سلول ها بررسی بشند . باید چه تغیری بدم
سوال دوم اینکه ایا این کار خیلی سرعت لود صفحه را پایین میاره؟با فرض اینکه این کد را در پیج لودم بزارم
واینکه راهی هست که بشه اینکار را کرد و سرعت کم نشه؟

hamidtmu
شنبه 07 اردیبهشت 1398, 15:23 عصر
با تشکر از دوستان خوب جوابش را پیدا کردم. اینجا بود-
سایتش شبیه همین برنامه نویسه ولی اسمش یه چیز دیگس


فقط یه مشکل اون اخرش دارم میخام بگم که ردیفی که اون عدد توش قرار گرفته قرمز باشه
ولی فقط ردیف اول قرمز میشه
INT را باید چی قرار بدم درسته بشه



bool dgvIsComplete = true;
for (int i = 0; i < dgvp.Rows.Count; i++)
{
for (int j = 0; j < dgvp.Columns.Count; j++)
{
object obj = dgvp.Rows[i].Cells[j].Value;
if (Convert.ToString(dgvp.Rows[i].Cells[j].Value) == "333")
{
dgvIsComplete = false;
break;
}
}
}
if (dgvIsComplete)
{
MessageBox.Show("ok");
}
else
{
int i = 1;
dgvp.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}



در اصل اینجا را میخام ویرایش کنم و بگم اگه اوکی نبود. ردیف مورد نظر قرمز بشه



else {
int i = 1;
dgvp.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}

Shadow_net
شنبه 07 اردیبهشت 1398, 16:52 عصر
سلام
اگر میخاید همش رنگش عوض بشه نیازی به این همه کد مخصوصاً if پایین نیست

for (int i = 0; i < dgvp.Rows.Count; i++)
{
for (int j = 0; j < dgvp.Columns.Count; j++)
{
if (Convert.ToString(dgvp.Rows[i].Cells[j].Value) == "333")
{
dgvp.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
}
}

hamidtmu
شنبه 07 اردیبهشت 1398, 17:19 عصر
سلام
اگر میخاید همش رنگش عوض بشه نیازی به این همه کد مخصوصاً if پایین نیست

for (int i = 0; i < dgvp.Rows.Count; i++)
{
for (int j = 0; j < dgvp.Columns.Count; j++)
{
if (Convert.ToString(dgvp.Rows[i].Cells[j].Value) == "333")
{
dgvp.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
}
}


با تشکر دوست عزیز. خیلی عالی و سازنده بود. اگه من بخام فقط همون سلول را رنگی کنم با همین کد میشه -میخام ردیف مثلا رنگ قرمز و سلول رنگ زرد باشه

Shadow_net
شنبه 07 اردیبهشت 1398, 17:43 عصر
بله
کد زیر رنگ ستون رو تغییر میده جایی که ردیف قرمز هست
میتونید از رویداد CellClick یا Cell های دیگه استفاده کنید

private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor == Color.Red)
{
dataGridView1.Columns[e.ColumnIndex].DefaultCellStyle.BackColor = Color.Yellow;
}
}

شرط هاش دیگه به عهده خودتون