} //OperationsInfoDGV_CellMouseClick private void editOperDescriptToolStripMenuItem_Click(object sender, EventArgs e) { //Открываем ячейку для редактирования. (Вся строка становится не readonly) DataGridViewCell cell = OperationsInfoDGV.SelectedRows[0].Cells[DescriptionCol.Index]; cell.ReadOnly = false; OperationsInfoDGV.BeginEdit(false); //Активируем для редактирования }//editOperDescriptToolStripMenuItem_Click
}//EditContragentToolStripMenuItem_Click private void OperationsInfoDGV_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { //Если ПКМ по ячейке столбца 'Комментарий', выводи контекстное меню. if (e.Button == MouseButtons.Right && e.ColumnIndex == DescriptionCol.Index) { Rectangle rect = OperationsInfoDGV.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false); Point loc = new Point(rect.Left + e.X, rect.Top + e.Y); editOperDescriptContextMenuStrip.Show(OperationsInfoDGV, loc, ToolStripDropDownDirection.BelowRight); OperationsInfoDGV.Rows[e.RowIndex].Cells[DescriptionCol.Index].Selected = true; } //if } //OperationsInfoDGV_CellMouseClick
} //OperationsInfoDGV_CellEndEdit /// <summary> /// Заполняет таблицу Операций данными из переданного списка. /// </summary> /// <param name="operationsList">Список операций для заполнения.</param> private void FillTheOperationsInfoDGV(List <IOperation> operationsList) { OperationsInfoDGV.Rows.Clear(); //Очищаем таблицу операций от старых данных. foreach (IOperation oper in operationsList) { OperationsInfoDGV.SelectionChanged -= OperationsInfoDGV_SelectionChanged; //Отключаем вызов события, т.к. оно инициируется сразу при добавлении строки в таблицу, что вызывает ошибку выполнения. int rowIndx = OperationsInfoDGV.Rows.Add(); DataGridViewRow row = OperationsInfoDGV.Rows[rowIndx]; row.Tag = oper; row.Cells[OperationIdCol.Index].Value = oper.OperationId; row.Cells[DateCol.Index].Value = oper.OperationDate; row.Cells[EmployeeCol.Index].Value = (oper.Employee != null) ? oper.Employee.GetShortFullName() : null; row.Cells[ContragentEmployeeCol.Index].Value = oper.ContragentEmployee; row.Cells[DescriptionCol.Index].Value = oper.Description; row.Cells[TotalSumCol.Index].Value = oper.OperationDetailsList.Sum(od => od.Sum); OperationsInfoDGV.ClearSelection(); OperationsInfoDGV.SelectionChanged += OperationsInfoDGV_SelectionChanged; } //foreach } //FillTheOperationsInfoDGV