У меня есть Datagridview, на котором мне нужно проверить ввод пользователя на строки certains и изменить его в соответствии с его значением. Например, если пользователь вводит код продукта, который не существует в БД, поиск диалогового окна продукта вызывает поиск и поиск продукта и возвращает правильный код. Таким образом, после прочтения вокруг много, я решил обработать событие CellFormating: но я столкнулся с двумя проблемами:DatagridView: на каждом «onmouseenter» в любой ячейке возникает событие cellFormatting?
- e.value выставиться с правильным значением, но оно не сохраняется
- И событие поднимается как миллионы раз, а иногда сталкивается с исключением SO.
И вот почему я поставил mbox в обработчик событий, и теперь программы ничего не делают, кроме как показывает это mbox.
Дело в том, что даже когда формы создаются вновь, событие много поднимается, и каждый раз, когда я перемещаю указатель мыши на любую ячейку, событие снова поднимается.
Какой здесь вариант? ниже приведен код внутри обработчика событий:
void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (e.ColumnIndex == 0 && !dataGridView1.Rows[e.RowIndex].IsNewRow)
{
if (!Rep.Cajero_ProductoExiste(double.Parse(e.Value.ToString())))
{
BuscarEIngresarProducto(ref e);
}
}
MessageBox.Show("Event handler raised");
}
catch
{
e.FormattingApplied = false;
}
}
Где Rep.Cajero_ProductoExiste
это метод, который возвращает логическое значение = True, если продукт существует, и метод BuscarEIngresarProducto()
, как показано ниже:
private void BuscarEIngresarProducto(ref DataGridViewCellFormattingEventArgs e)
{
Busqueda b = new Busqueda(Rep, 2);
if (b.ShowDialog() == DialogResult.OK)
{
e.Value = b.ProductoCodigo;
dataGridView1.CurrentRow.Cells["pk"].Value = b.Producto;
e.FormattingApplied = true;
}
}
Любая помощь будет быть aprecciated. Спасибо заранее (PD: извините 4 мой английский, я испанский болтун)
Спасибо! Есть способ tooo многих событий в datagridview, поэтому я думаю, что я должен начать читать многие из них. – josecortesp