Currently you are setting the color for the DataGridView to red.
If you just want a specific row you have to set the color for this row.
Just like this:
myrow.defaultcellstyle.forecolor="Color.Red";
BTW. just to improve your code a bit, why do you set a outside of the loop?
This would be better i guess
string a = dataGridView1.Rows[0].Cells[2].Value.ToString();
foreach (DataGridViewRow Myrow in dataGridView1.Rows)
{
if (Myrow.Cells[2].Value.ToString() == "Luzon")
{
Myrow.DefaultCellStyle.BackColor = Color.Red;
}
}
Even better would be to use to Columns name instead of the 2 in this :)
like Myrow.Cells["NameOfColumn"].Value