Вместо этого вы должны обработать событие CellClick объекта DataGridView:
dataGridView1.CellClick += New DataGridViewCellEventHandler(dataGridView1_CellClick)
Создайте функцию для обработки этого с правильной подписью:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
try {
string nd = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
System.Diagnostics.Debug.WriteLine("Cell seleccionada: " + nd + " current row es: " + e.RowIndex);
string nOrdFab = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
SqlConnection conexion = new SqlConnection(ConfigurationManager.AppSettings["ggConnectionString"].ToString());
String strSql = "";
SqlCommand comando;
SqlDataAdapter adapter;
} catch (Exception ex)
{
MessageBox.Show(Form.ActiveForm, "Error: " + ex.ToString());
}
}
Было бы также полезно удалить Попробуйте Catch, как только этот код заработает, или, по крайней мере, перехватывайте только внешние ошибки, возникающие в SqlAdapter. Кроме того, если ваши столбцы создаются в конструкторе, в вашей форме будет поле для каждого столбца, например IDDataGridViewTextboxColumn
, для которого вы можете получить доступ к индексу типа IDDataGridViewTextboxColumn.Index
, чтобы упростить и уточнить, к какому столбцу вы обращаетесь. Это сделало бы объявление nOrdFab намного более понятным; например:
string nOrdFab = dataGridView1.Rows[e.RowIndex].Cells[IDDataGridViewTextboxColumn.Index].Value.ToString();
РЕДАКТИРОВАТЬ: Если вы пытаетесь выполнить работу в обработчике ContextMenuStrip
, вам все равно нужно обработать событие CellClick
, чтобы установить от текущей ячейки до той, которая была нажата правой кнопкой мыши, но для обработки события ToolStripMenuItem's
Click
необходимо снова использовать свойство CurrentCell
.
Обработчик CellClick:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
if (e.Button == MouseButtons.Right && e.RowIndex >= 0) {
dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
}
Затем обработчик пункта контекстного меню:
private void abrirIncendia_Click(object sender, EventArgs e) {
try {
string nOrdFab = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value.ToString();
SqlConnection conexion = new SqlConnection(ConfigurationManager.AppSettings["ggConnectionString"].ToString());
String strSql = "";
SqlCommand comando;
SqlDataAdapter adapter;
} catch (Exception ex)
{
MessageBox.Show(Form.ActiveForm, "Error: " + ex.ToString());
}
}