ฉันมี DataGridView
ในใบสมัครแบบฟอร์มของฉัน หลังจากดึงข้อมูลจากตารางในฐานข้อมูลและแสดงใน DataGridView
ฉันจะใช้สี สีเขียว กับ BackColor ของแถวบางเซลล์หากตรงตามเงื่อนไขที่กำหนด หลังจากที่เซลล์เหล่านั้นมีสีเป็น สีเขียว โปรแกรมจะทำให้เซลล์เหล่านั้นผ่านเงื่อนไขอื่น ซึ่งจะให้สี BackColor สีแดง ของทั้งแถว หากไม่เป็นไปตามเงื่อนไข เงื่อนไข.
อย่างไรก็ตาม ดูเหมือนว่าเซลล์ที่ใส่สีไว้ล่วงหน้าแล้วจะไม่สามารถเขียนทับด้วยสีใหม่ได้ แม้ว่าฉันจะใช้โค้ดต่อไปนี้เพื่อระบายสีทั้งแถว สีแดง แต่จะใช้ได้เฉพาะกับเซลล์ที่ไม่ได้มีการกำหนดสีไว้ล่วงหน้าเท่านั้น
for(int i=0; i<myDataGridview.Rows.Count; i++){
if(/*a certain condition FAILS*/){
myDataGridView.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
}
ตอนนี้ ฉันกำลังระบายสีเซลล์ที่มีสีล่วงหน้า สีแดง ทีละเซลล์ แต่การดำเนินการนี้ใช้เวลานานและโค้ดเช่น:
for(int i=0; i<myDataGridview.Rows.Count; i++){
if(/*a certain condition FAILS*/){
//Trying to color the whole row RED, but not working
myDataGridView.Rows[i].DefaultCellStyle.BackColor = Color.Red;
//Manually color the cells, which are pre-colored to green, RED
myDataGridView.Rows[i].Cells[6].Style.BackColor = Color.Red;
myDataGridView.Rows[i].Cells[7].Style.BackColor = Color.Red;
....
myDataGridView.Rows[i].Cells[13].Style.BackColor = Color.Red;
myDataGridView.Rows[i].Cells[16].Style.BackColor = Color.Red;
}
}
ฉันสงสัยว่ามีวิธีที่ดีกว่าในการแทนที่ backColor หรือไม่ ใครสามารถช่วยได้บ้าง?
นี่คือตัวอย่าง (เลียนแบบ) DataGridView
ผู้ที่ไม่ผ่านเงื่อนไขแรกจะถูกทำให้เป็นสีแดงทั้งแถวโดยอัตโนมัติ และนั่นก็ได้ผล อย่างไรก็ตาม หากผ่านเงื่อนไขแรกและทำให้เซลล์ "Passed1" เป็นสีเขียว แล้วไม่ผ่านเงื่อนไขที่สอง อย่างที่คุณเห็น เซลล์เหล่านั้นจะยังคงเป็นสีเขียว ฉันต้องการให้ทั้งแถวเป็นสีแดง และเขียนทับเซลล์ที่เติมสีไว้เป็นสีเขียวให้เป็นสีแดงด้วยซ้ำ
CellPainting
หากคุณเขียนโค้ดตามเงื่อนไขครบก็ควรจะเพียงพอแล้ว - person TaW   schedule 21.09.2017