2013-09-17 2 views
2

Я стараюсь: dataGridView.Rows[0].Cells[4].Style.BackColor = Color.AliceBlue; и он отлично работает, но в случае, если я добавляю элемент в свой datagridview, я не знаю, с каким номером строки я работаю.Changed datagridview cell backgroung color

это, как я добавление элементов в мой DataGridView:

public void addToDataGridView() 
    { 
     dataGridView.Rows.Add("test1", fileName, fileSize, DateTime.Now, "myStatus"); 
    } 

ответ

2

Метод dataGridView.Rows.Add дает индекс добавленной строки.

public void addToDataGridView() 
{ 
    int index = dataGridView.Rows.Add("test1", fileName, fileSize, DateTime.Now, "myStatus"); 
    dataGridView.Rows(index).Cells(4).Style.BackColor = Color.AliceBlue; 
} 
0

, если вы используете dataGridView.Rows.Add(), вы добавляете строку в конец DGW => индекс будет dataGridView.Rows.Count - 1

EDIT:
Решение Крис намного лучше, чем использование dataGridView.Rows.Count - 1

Вы можете выбрать другое решение - вы создаете DataGridViewRow, в котором вы можете установить стиль и т. Д., А затем просто добавить его в dgw.

1

Есть более чем один способ сделать это:

  1. Если вам нужно изменить цвет для всего столбца:

    DGV.Columns[ColumnIndexToColor].DefaultCellStyle.ForeColor = Color.AliceBlue; 
    
  2. Если вам нужно изменить цвет на основе некоторых условий и ваш DGV является оценкой, вы можете использовать DataBindingComplete события

    private void DGV_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
    { 
        if(DGV.Rows.Count>0 && DGV.Columns.Count>0) 
        { 
        foreach (DataGridViewRow r in DGV.Rows) 
        { 
         if(condition) 
         { 
         DataGridViewCheckBoxCell cell = r.Cells[ColumnIndexToColor]; 
         cell.Style.BackColor = Color.AliceBlue; 
         } 
        } 
        } 
    } 
    
  3. Если вам нужно изменить цвет на основе какого-то условия, и ваш DGV не связан: когда вы добавляете строку в DGV, как в ответ от @Chris

+0

Это интересно, спасибо ... вы говорите, что, например, каждый раз новый элемент, добавленный в мой DGV, я могу зарегистрироваться на этом мероприятии и действовать согласно моему состоянию? – user2214609

+0

Вызывается DataGridViewBindingComplete, если у вас есть DataSource, связанный с вашим DataGridView. Если вы этого не сделаете, и вы хотите изменить цвет при добавлении строк, это событие RowsAdded. Существует также событие CellFormatting, которое можно использовать для установки цвета (иногда он немного мигает): http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting(v=vs. 90) .aspx – Arie