2012-03-08 9 views
0

こんにちはすべて私はデータグリッドビュー内のすべてのセルをループする必要があり、周囲のすべてのセルをチェックしたいので、セルの周りをすべて確認する必要があります。 これは8方向(上、下、左、右、左上、右上、左下、右下)です そして、それらが黒の隣人であれば塗装したいと思います。両方とも。だからここDataGridView、例外を含むすべての行をループします

は、私は今のところ得たものである:

for (int x = 0; x < yourGridName.Rows.Count; x++) 
{ 
    //Loop through all cells in that row and change its color. 
    for (int y = 0; y < yourGridName.Rows[x].Cells.Count; y++) 
    { 
     if (dataGridView1.Rows[dataGridView1.SelectedRows[x].Index].Cells[y].Value.ToString() != "YES") 
     yourGridName.Rows[x].Cells[y].Style.BackColor = 
     System.Drawing.Color.Black; 
    } 
    } 
} 
+0

データグラムビュー内のすべてのセルに8つのネイバーがあるわけではありません。たとえば、左上のセル?これらのエッジケースには注意が必要です。 – ImGreg

答えて

3

私はあなたがあなたのX/Yグリッドセルのためのすべての8隣人を取得する方法を知っておく必要があります理解してどのような。

グリッドセル[X] [Y]でその後8人の隣人

グリッドでなければならない場合、[X] [Y-1](IF Y-1> = 0)
グリッド[X] [
グリッド[X + 1] [Y](X + 1の場合)[Y + 1](もしY + 1ならばCells.Count)
グリッド[X-1] [Y] < Rows.Count)
グリッド[X + 1] [Y + 1](IF Y + 1 < Cells.Count & & X + 1 < Rows.Count)
グリッド[X-1] [Y-1] (Y-1> = 0の場合)& & X-1> = 0)

関連する問題