// Обрабатывает нажатие ячейки таблцы. В каждой ячейке хранятся дополнительные данные в // виде объекта dynamic, содержащего идентификатор пользователя (residentId) // и идентификатор комнаты (roomId) private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) { DataGridView dataGridView = (DataGridView)sender; if (e.ColumnIndex == 1 && e.RowIndex != -1) { DataGridViewLinkCell cell = (DataGridViewLinkCell)dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]; dynamic tagObject = cell.Tag; if (tagObject.residentId != 0 && tagObject.roomId != 0) { ResidentForm.ShowDialogForOldResident(sqlConnectionString, tagObject.residentId, tagObject.roomId); // DataGridUpdateRoom(dataGridView, tagObject, e.RowIndex); LoadTabs(); } else if (tagObject.roomId != 0) { string result = SettlementForm.ShowDialogForNewSettlement(sqlConnectionString, tagObject.roomId); Int32.TryParse(result, out int residentId); if (residentId != 0) { MessageBox.Show("Успешно добавлено!"); tagObject.residentId = residentId; DataGridUpdateRoom(dataGridView, tagObject, e.RowIndex); } } } }
/// <summary> /// Открывает окно заселения в выбранную комнату. Возвращает идентификатор жителя. /// </summary> /// <param name="sqlConnection">Подключение пользователя</param> /// <param name="roomId">Идентификатор комнаты для заселения</param> /// <returns>Идентификатор жителя или null, если житель не был заселён</returns> public static string ShowDialogForNewSettlement(SqlConnectionStringBuilder sqlConnectionString, int roomId) { SettlementForm settlementForm = new SettlementForm(sqlConnectionString, roomId); return(settlementForm.ShowDialog() == DialogResult.OK ? settlementForm.residentIdLabel.Text : null); }