2012-03-15 7 views
0

У меня есть код, который выполняет итерацию через все ячейки, как я могу сделать каждую ячейку 4x4 разным цветом?Как разбить datagrid на одни и те же прямоугольники

Вот мой код:

int c = ran.Next(1, 5); 

for (int i = 0; i < box_width; i++) 
{ 
    for (int j = 0; j < box_height; j++) 
    { 
     switch (c) 
     { 
      case 1: 
       MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.Yellow; 
       break; 
      case 2: 
       MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.LightGray; 
       break; 
      case 3: 
       MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.LightBlue; 
       break; 
      case 4: 
       MyClass.grid.Rows[j].Cells[i].Style.BackColor = Color.Blue; 
       break; 
     } 
    } 

} 

Этот код заполняет всю сетку с цветом, который случайным образом выбрали. Я хочу, чтобы он разделил его на несколько размеров X x X с другим цветом.

Спасибо

ответ

1
int c = ran.Next(1, 5); 

for (int i = 0; i < box_width; i += 2) 
{ 
    for (int j = 0; j < box_height; j += 2) 
    { 
     Color cellColor; 

     switch (c) 
     { 
      case 1: 
       cellColor = Color.Yellow; 
       break; 
      case 2: 
       cellColor = Color.LightGray; 
       break; 
      case 3: 
       cellColor = Color.LightBlue; 
       break; 
      case 4: 
       cellColor = Color.Blue; 
       break; 
     } 

     MyClass.grid.Rows[j].Cells[i].Style.BackColor = cellColor; 
     MyClass.grid.Rows[j].Cells[i+1].Style.BackColor = cellColor; 
     MyClass.grid.Rows[j+1].Cells[i].Style.BackColor = cellColor; 
     MyClass.grid.Rows[j+1].Cells[i+1].Style.BackColor = cellColor; 
    } 
} 

Это предполагает, что box_width и box_height такие же, как количество строк и ячеек в вашем DataGridView.

Сообщите мне, если это работает для вас, я не проверял его, но это казалось мне прямо в голове.

Однако это вызовет исключение, если ячейки не имеют четного 4x4 кратного. Вы уверены, что они всегда будут кратными 4x4? Если нет, вам нужно добавить проверку ошибок.

+0

Это отлично работает. Как сделать его подходящим для всех экранов? Например, если мое разрешение экрана даст мне разное количество ячеек, а в последнем столбце у меня останется только один, а не два? могу ли я нарисовать только этот? –

Смежные вопросы