PDA

View Full Version : سوال: پایین آمدن سرعت datagridview بخاطر کد رنگی کردن هر سطر بر اساس شرط خاص



jafarpalideh
دوشنبه 08 آبان 1396, 11:36 صبح
با سلام .من یه دیتاگریدویو دارم که توش دو تا شرط دارم طبق کد زیر . ولی سرعتش خیلی اومده پایین . اسکرول که میکنم اسلوموشن حرکت میکنه .
چطور میتونم سرعت رو افزایش بدم ؟








private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{


foreach (DataGridViewRow Myrow in dataGridView1.Rows)
{
if (Convert.ToBoolean(Myrow.Cells["Sign1"].Value) == true && Convert.ToBoolean(Myrow.Cells["Sign2"].Value) == true)
{
Myrow.DefaultCellStyle.BackColor = Color.Brown;
}
else if (Convert.ToBoolean(Myrow.Cells["Sign1"].Value) == false && Convert.ToBoolean(Myrow.Cells["Sign2"].Value) == true)
{
Myrow.DefaultCellStyle.BackColor = Color.BurlyWood;
}
else if (Convert.ToBoolean(Myrow.Cells["Sign1"].Value) == true && Convert.ToBoolean(Myrow.Cells["Sign2"].Value) == false)
{
Myrow.DefaultCellStyle.BackColor = Color.Yellow;
}
else if (Convert.ToBoolean(Myrow.Cells["Sign1"].Value) == false && Convert.ToBoolean(Myrow.Cells["Sign2"].Value) == false)
{
Myrow.DefaultCellStyle.BackColor = Color.White;
}






}

}

mr.sirwan
دوشنبه 08 آبان 1396, 15:48 عصر
با سلام، توی فرم لود از متد DoubleBuffered استفاده کن، اگه اشتباه نکنم یه پارامتر بولین میگرفت:

form1.DoubleBuffered(true);

و یا میتونی یه اکستنشن متد بنویسی و این خاصیت رو فقط به دیتا گریدت بدی

jafarpalideh
دوشنبه 08 آبان 1396, 16:06 عصر
با سلام، توی فرم لود از متد DoubleBuffered استفاده کن، اگه اشتباه نکنم یه پارامتر بولین میگرفت:

form1.DoubleBuffered(true);

و یا میتونی یه اکستنشن متد بنویسی و این خاصیت رو فقط به دیتا گریدت بدی


سرعت گرید یه کمکی بهتر شد . ولی هنوز هم پرش داره .

Mahmoud Zaad
دوشنبه 08 آبان 1396, 16:32 عصر
سلام
توی این رویداد نیازی نیست از حلقه استفاده کنی.
dataGridView1.Rows[e.RowIndex].Cells["Sign1"].Value

jafarpalideh
سه شنبه 09 آبان 1396, 08:45 صبح
سلام
توی این رویداد نیازی نیست از حلقه استفاده کنی.
dataGridView1.Rows[e.RowIndex].Cells["Sign1"].Value


جناب محمودزاد عزیز متوجه منظورتون نشدم .:ناراحت:
میشه واضحتر بگین ؟

Mahmoud Zaad
سه شنبه 09 آبان 1396, 09:36 صبح
از حلقه که نباید استفاده کنی، اون کد هم منظورم این بود که همون کدهای بالا رو بنویسید و به جای MyRow از dataGridView1.Rows[e.RowIndex] استفاده کنید. البته بهتره دو تا متغیر بولین ابتدا تعریف کنید برای مقادیر ستون های Sign1 و Sign2 و بعد شرط ها رو چک کنید.
bool _sign1=Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["Sign1"].Value);
bool _sign2=Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["Sign2"].Value);
if(_sign1 && _sign2)
...