У меня есть приложение C#, которое получает пакет из TCP и при разборе пакета я создаю столбец кнопок в datagridview. Текст кнопки необходимо изменить в соответствии с полученными данными, т. Е. Если получено «0», текст кнопки для этой строки должен быть «STOP», а если «1» принят, текст кнопки для этой строки должен быть « НАЧАЛО'. Всегда есть кратные строки. Источник данных Datagridview обновляется каждые 10 секунд.Как изменить текст ячейки кнопки Datagridview при каждом обновлении источника данных
if (port_dict[kvp.Key] == "0")
{
PORT_BUTTON_DICT[kvp.Key].UseColumnTextForButtonValue = true;
PORT_BUTTON_DICT[kvp.Key].Text = "START";
this.Invoke(new Action(() =>datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly=false));
this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].Value = PORT_BUTTON_DICT[kvp.Key]));
this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly = true));
this.Invoke(new Action(() => datagridPM.Rows[row_count].Cells[datagridPM.Columns.Count - 1].Value = PORT_BUTTON_DICT[kvp.Key].Text));
}
else
{
PORT_BUTTON_DICT[kvp.Key].UseColumnTextForButtonValue = true;
PORT_BUTTON_DICT[kvp.Key].Text = "STOP";
this.Invoke(new Action(() =>datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly=false));
this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].Value = PORT_BUTTON_DICT[kvp.Key]));
this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly = true));
this.Invoke(new Action(() => datagridPM.Rows[row_count].Cells[datagridPM.Columns.Count - 1].Value = PORT_BUTTON_DICT[kvp.Key].Text));
}
То, с чем я столкнулся, - каждый раз, когда изменяется текст всех кнопок, если кто-либо меняется. Мне нужны текстовые кнопки только для тех строк, для которых значение изменилось, а не для каждой строки.
Все еще не работает. Я уже удалил строку. – Ankur
@Ankur, вы удалили из блока if и else? – Junaith
yes.The текст меняется, но сразу текст кнопки устанавливается пустым. I использовал Thread.Sleep (5000), и я заметил, что текст исчезает сразу после 5 секунд установки текста. – Ankur