Пытаюсь поменять цвет текст в строке, но при загрузке формы строка моргнет нужным цветом и опять станет цвет по умолчанию.
private void bid_Load(object sender, EventArgs e)
{
for (int i = 0; i < dg_bid.Rows.Count; i++)
{
string statusID = dg_bid.Rows[i].Cells["status"].Value.ToString();
dg_bid.Rows[i].DefaultCellStyle.ForeColor = core.setColor(statusID);
}
dg_bid.Refresh();
}
Если убрать обновление таблицы то вообще не чего не произойдет. Как это можно исправить?
public Color setColor(string status)
{
string type = status;
Color col;
col = Color.FromArgb(64, 64, 64);
switch (type)
{
case "0":
col = Color.FromArgb(127, 140, 141);
break;
case "1":
col = Color.FromArgb(39, 174, 96);
break;
case "2":
col = Color.FromArgb(142, 68, 173);
break;
case "3":
col = Color.FromArgb(52, 152, 219);
break;
}
return col;
}
Не вникая в детали Вашей задачи, ИМХО в Вашем случае проще всего повесить изменение цвета в желаемой строке DataGrid на его событие RowPrePaint. Вот стартовая точка для Вас:
private void dg_bid_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
// i - Ваша строка в которой Вы желаете изменить цвет. Как она формируется Вы не рассказали
if( i < dg_bid.Rows.Count )
dg_bid.Rows[i].DefaultCellStyle.ForeColor = core.setColor(statusID);
}
Так все работает
В дополнение к правкам, которые Вы внесли в свой вопрос - такой код у меня отработал без проблем:
public Color setColor(string status)
{
string type = status;
Color col;
col = Color.FromArgb(64, 64, 64);
switch (type)
{
case "0":
col = Color.FromArgb(127, 140, 141);
break;
case "1":
col = Color.FromArgb(39, 174, 96);
break;
case "2":
col = Color.FromArgb(142, 68, 173);
break;
case "3":
col = Color.FromArgb(52, 152, 219);
break;
}
return col;
}
private void dtGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
dtGridView.Rows[1].DefaultCellStyle.ForeColor = setColor("0");
dtGridView.Rows[2].DefaultCellStyle.ForeColor = setColor("1");
dtGridView.Rows[3].DefaultCellStyle.ForeColor = setColor("2");
dtGridView.Rows[4].DefaultCellStyle.ForeColor = setColor("3");
}
Я использовал без изменений Вашу функцию Color setColor(string status).
Значит Ваши проблемы в другом.
Продвижение своими сайтами как стратегия роста и независимости