Adilcan Topuz Ответов: 1

Как запустить cellendedit при изменении значения ячейки в datagridview


То CellEndEdit событие выполняется, когда я редактирую практическое руководство ячейки.
но когда я печатаю данные из базы данных в ячейку DataGridView, CellEndEdit не работает.
dataGridView1.Rows[0].Cells[0].Value = "test";
Как я могу запустить CellEndEdit? СПАСИБО...

Коды:
private void btnKaydet_Click(object sender, EventArgs e)
        {
            try
            {
                int index = 2;
                int rc = gridView1.RowCount;
                for (int i = 0; i < rc; i++)
                {
                    index++;
                    string stk = gridView1.GetRowCellValue(i, "STOKKODU").ToString();
                    string beden = gridView1.GetRowCellValue(i, "BEDEN").ToString();
                    string mik = gridView1.GetRowCellValue(i, "MIKTARI_2").ToString();
                    dataGridView1.Rows[index].Cells[0].Value = stk;
                    dataGridView1.Rows[index].Cells[1].Value = beden;
                    dataGridView1.Rows[index].Cells[2].Value = mik;
                }
                ExcelProje.Save();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }



private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            object hucre = ExcelSayfa.Cells[dataGridView1.CurrentCell.RowIndex + 2, dataGridView1.CurrentCell.ColumnIndex + 1];
            Excel.Range bolge = ExcelSayfa.get_Range(hucre, hucre);
            bolge.Value2 = dataGridView1.CurrentCell.Value;
        }


Что я уже пробовал:

datagridview1.Метод endedit();

-----------------------

dataGridView1.CellEndEdit += DataGridView1_CellEndEdit;

private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
       {
          object hucre = ExcelSayfa.Cells[dataGridView1.CurrentCell.RowIndex + 2, dataGridView1.CurrentCell.ColumnIndex + 1];
           Excel.Range bolge = ExcelSayfa.get_Range(hucre, hucre);
           bolge.Value2 = dataGridView1.CurrentCell.Value;
       }

1 Ответов

Рейтинг:
1

RickZeeland

Я думаю, что вам нужно использовать

dataGridView1.Rows[e.RowIndex]
Также видеть: Практическое руководство.Событие CellEndEdit (System.Окна.Формы)[^]
Событие CellEndEdit, вероятно, сработает только после того, как ячейка потеряет фокус.
Так что, может быть, лучше использовать CellValueChanged вместо этого в моем тесте он работал при программном изменении значения ячейки.
Другой вариант-использовать CurrentCellDirtyStateChanged событие, см.: winforms-событие изменения значения ячейки, c# - переполнение стека[^]


Adilcan Topuz

dataGridView1[0][0]. value = " тест";

Я попробовал это сделать, но CellValueChanged не сработал. :)

RickZeeland

Может быть, у вас есть какой-то противоречивый набор свойств, не могли бы вы попробовать со свежей формой и посмотреть, работает ли она тогда ?

Adilcan Topuz

Я пытаюсь сейчас :)

Adilcan Topuz

Я снова совершаю ту же ошибку.