Обновление текста кнопки в сетке данных - PullRequest
3 голосов
/ 09 июня 2011

У меня есть DataGridView на winform.Я динамически добавляю DatagridViewButtonColumn в метод загрузки формы с именем кнопки как btnAction и текстом, отображаемым на нем как «Процесс».

Таким образом, каждая строка в сетке будет иметь эту кнопку «Процесс» в последнем столбце.

При событии нажатия этой кнопки я использую BackgroundWorker для вызова метода, который выполняет некоторые вычисления.После завершения вычислений мне нужно обновить текст этой нажатой кнопки как «Обработано» в этой строке сетки.Как мне этого добиться?

Спасибо.

1 Ответ

3 голосов
/ 09 июня 2011

Вы можете установить значение рассматриваемой ячейки, и это обновит текст.

Чтобы это работало, вы также должны установить для свойства UseColumnTextForButtonValue столбца значение false;

dataGridView[0,0].Value = "Processed";

С этим кодом вам просто нужно изменить индексы столбцов и строк, чтобы они соответствовали вашей ячейке, или получить доступ к ячейке другим способом.

Этот код устанавливает ваше значение, но, как вы сказали, что делаете это в фоновом режиме, вам потребуется немного больше кода для установки текста.

У фонового работника есть событие RunWorkerCompleted, которое запускается после завершения работника. В вашем рабочем обработчике DoWork просто есть ваш код обработки:

void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // Some long running processing
}

Тогда в вашем обработчике RunWorkerCompleted у вас есть значение:

void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    dataGridView1[0,0].Value = "Processed";
}
...