/// <summary> /// S'effectue après la validation d'une ligne de la DataGridView "dgvMotCle" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvMotCle_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { if (dgvMotCle.Rows[e.RowIndex].Cells[1].Value != null) { if (dgvMotCle.Rows[e.RowIndex].Cells[1].Value.ToString().Trim() != "") { if (dgvMotCle.Rows[e.RowIndex].Cells[0].Value == null) { MessageBox.Show(QcmController.InsertMotCle(dgvMotCle.Rows[e.RowIndex].Cells[1].Value.ToString())); dgvMotCle.Rows[e.RowIndex].Cells[0].Value = QcmController.GetNextIdMotCle() - 1; } else { string returnString = QcmController.UpdateMotCle(Convert.ToInt32(dgvMotCle.Rows[e.RowIndex].Cells[0].Value), dgvMotCle.Rows[e.RowIndex].Cells[1].Value.ToString()); if (returnString != "") { MessageBox.Show(returnString); } } } } if (dgvMotCle.Rows.Count - ((dgvMotCle.AllowUserToAddRows) ? 1 : 0) == 4) { dgvMotCle.AllowUserToAddRows = false; } }
/// <summary> /// S'effectue lorsque la sélection de la question change. /// Affiche les réponses de la nouvelle question sélectionée. /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvQuestion_SelectionChanged(object sender, EventArgs e) { if (dgvQuestion.SelectedRows.Count > 0) { Clear = true; dgvReponse.Rows.Clear(); dgvReponse.AllowUserToAddRows = true; dgvReponse.AllowUserToDeleteRows = true; Clear = false; foreach (KeyValuePair <int, ReponseDatas> item in QcmController.GetReponsesByIdQuestion(Convert.ToInt32(dgvQuestion.SelectedRows[0].Cells[0].Value))) { dgvReponse.Rows.Add(new string[] { item.Key.ToString(), item.Value.Reponse, item.Value.BonneReponse.ToString() }); } if (dgvReponse.Rows.Count - ((dgvReponse.AllowUserToAddRows) ? 1 : 0) /*AddedRow*/ == 4 /*Ligne qui se fait supprimer*/) { dgvReponse.AllowUserToDeleteRows = false; } if (dgvReponse.Rows.Count - ((dgvReponse.AllowUserToAddRows) ? 1 : 0) /*AddedRow*/ == 6 /*Ligne qui se fait supprimer*/) { dgvReponse.AllowUserToAddRows = false; } } }
/// <summary> /// S'effectue lors d'un clic sur la dernière colonne de la DataGridView "dgvReponse" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvReponse_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 2) { QcmController.ChooseCorrectAnswer(Convert.ToInt32(dgvQuestion.SelectedRows[0].Cells[0].Value)); RefreshQuestion(); } }
/// <summary> /// S'effectue lors d'un clic sur le ToolStripMenuItem "supprimerToolStripMenuItem" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void supprimerToolStripMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("Êtes-vous sûr de vouloir supprimer ce QCM ?", "Suppression de QCM", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { MessageBox.Show(QcmController.DeleteQCM()); this.Close(); } }
/// <summary> /// Raffraichit les questions /// </summary> private void RefreshQuestion() { dgvQuestion.Rows.Clear(); foreach (KeyValuePair <int, QuestionDatas> item in QcmController.GetQuestions()) { dgvQuestion.Rows.Add(new string[] { item.Key.ToString(), item.Value.Question }); } }
/// <summary> /// S'effectue lors de la suppression d'une ligne de la DataGridView "dgvMotCle" par l'utilisateur. /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvMotCle_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { if (QcmController.DeleteMotCleByIdMotCle(Convert.ToInt32(dgvMotCle.Rows[e.Row.Index].Cells[0].Value))) { MessageBox.Show("Mot-Clé supprimé avec succès !"); dgvMotCle.AllowUserToAddRows = true; } else { MessageBox.Show("Echec lors de la suppression du mot-clé !"); } }
/// <summary> /// S'effectue après la suppression d'une ligne du DataGridView "dgvQuestion" par l'utilisateur. /// Elle permet la suppression de question du modèle. /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvQuestion_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { if (QcmController.DeleteQuestionByIdQuestion(Convert.ToInt32(dgvQuestion.Rows[e.Row.Index].Cells[0].Value))) { MessageBox.Show("Question supprimée avec succès !"); } else { MessageBox.Show("Impossible de supprimer la question !"); e.Cancel = true; } }
/// <summary> /// Affiche les informations de la Form /// </summary> public void LoadInformations() { InitializeComponent(); RefreshQuestion(); this.Text = "QCM: " + QcmController.GetTitreQCM(); tbxNomQCM.Text = QcmController.GetTitreQCM(); nudLevel.Value = QcmController.GetLevelByIdQCM(); Clear = false; foreach (KeyValuePair <int, MotsClesDatas> item in QcmController.GetMotsCles()) { dgvMotCle.Rows.Add(new string[] { item.Key.ToString(), item.Value.TextMotCle }); } }
/// <summary> /// S'effectue après la validation d'une ligne de la DataGridView "dgvReponse". /// Cette méthode est une des plus importantes, car elle permet la création et l'édition du modèle. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvReponse_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { if (!Clear) { if (dgvReponse.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null) { if (dgvReponse.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Trim() != "") { if (dgvReponse.Rows[e.RowIndex].Cells[1].Value != null) { int idQuestion = Convert.ToInt32(dgvQuestion.SelectedRows[0].Cells[0].Value); string reponseText = dgvReponse.Rows[e.RowIndex].Cells[1].Value.ToString(); bool bonneReponse = Convert.ToBoolean(dgvReponse.Rows[e.RowIndex].Cells[2].Value); if (reponseText.Trim() != "") { if (dgvReponse.Rows[e.RowIndex].Cells[0].Value == null) //Create { string returnText = QcmController.InsertReponse(idQuestion, reponseText, bonneReponse); if (returnText == "") { MessageBox.Show("Réponse créée avec succès !"); dgvReponse.Rows[e.RowIndex].Cells[0].Value = QcmController.GetReponsesByIdQuestion(idQuestion).Last().Key; } else { MessageBox.Show(returnText); e.Cancel = true; } } else { KeyValuePair <bool, string> retour = QcmController.UpdateReponseByIdQuestionAndIdReponse(idQuestion, Convert.ToInt32(dgvReponse.Rows[e.RowIndex].Cells[0].Value), new ReponseDatas(reponseText, bonneReponse, Modes.Update)); if (retour.Value != null) { MessageBox.Show(retour.Value); if (retour.Key) { e.Cancel = true; } } } } } } } } }
/// <summary> /// S'effectue lors de la suppression d'une ligne par l'utilisateur /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvReponse_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { if (QcmController.DeleteReponseByIdReponse(Convert.ToInt32(dgvQuestion.SelectedRows[0].Cells[0].Value), Convert.ToInt32(dgvReponse.Rows[e.Row.Index].Cells[0].Value))) { MessageBox.Show("Réponse supprimée avec succès !"); } else { MessageBox.Show("Impossible de supprimer la réponse !"); e.Cancel = true; } if (dgvReponse.Rows.Count - ((dgvReponse.AllowUserToAddRows) ? 1 : 0) /*AddedRow*/ == 4 + 1 /*Ligne entrain de se faire supprimer*/) { dgvReponse.AllowUserToDeleteRows = false; } dgvReponse.AllowUserToAddRows = true; }
/// <summary> /// S'effectue après la validation d'une cellule de la DataGridView "dgvQuestion". /// Elle permet l'édition du modèle. /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void dgvQuestion_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (e.FormattedValue != null) { if (e.FormattedValue.ToString().Trim() != "") { if (e.FormattedValue.ToString() != dgvQuestion.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()) { if (QcmController.UpdateQuestionByIdQuestion(Convert.ToInt32(dgvQuestion.Rows[e.RowIndex].Cells[0].Value), e.FormattedValue.ToString())) { MessageBox.Show("Question modifiée avec succès !"); } else { MessageBox.Show("Impossible de modifier la question !"); e.Cancel = true; } } } } }
/// <summary> /// S'effectue lors d'un clic sur le ToolStripMenuItem "sauvegarderToolStripMenuItem" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void sauvegarderToolStripMenuItem_Click(object sender, EventArgs e) { QcmController.Save(); }
/// <summary> /// S'effectue lors d'un clic sur le ToolStripMenuItem "ajouterToolStripMenuItem" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void ajouterToolStripMenuItem_Click(object sender, EventArgs e) { QcmController.CreateQuestionReponse(); RefreshQuestion(); }
/// <summary> /// S'effectue lors d'un clic sur le bouton "btnModifier" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void btnModifier_Click(object sender, EventArgs e) { MessageBox.Show(QcmController.UpdateQCM(tbxNomQCM.Text, Convert.ToInt32(nudLevel.Value))); }