frmLesson(LeconsRow lesson)
        {
            UseWaitCursor = true;
            eta.Fill(edt);
            Exercises = new Queue <ExercicesRow>((ExercicesRow[])edt.Select(
                                                     "numLecon = '" + lesson.numLecon +
                                                     "' AND numCours = '" + lesson.numCours + "'",
                                                     "numExo asc"
                                                     ));

            if (Exercises.Count == 0)
            {
                MessageBox.Show("La lecon ne contient aucun exercice !");
                DialogResult = DialogResult.Cancel;
                Close();
            }
            else
            {
                InitializeComponent();
                Text     = lesson.titreLecon;
                pgb.Step = 100 / Exercises.Count;
                LoadExercise();
            }
            Mistakes      = new Dictionary <int, string>();
            UseWaitCursor = false;
        }
        tvwProgress_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            object   row = (e.Node as DataNode).DataBoundObject;
            CoursRow course;

            if (row.GetType() == typeof(CoursRow))
            {
                course = (CoursRow)row;
                UpdateCourseInfo(course.titreCours, course.commentCours);
                lblLessonTitle.Visible = lblLessonComment.Visible = btnStartLesson.Enabled = false;
            }
            else if (row.GetType() == typeof(LeconsRow))
            {
                course = (CoursRow)(((DataNode)e.Node.Parent).DataBoundObject);
                LeconsRow lesson = (LeconsRow)row;
                UpdateCourseInfo(course.titreCours, course.commentCours);
                UpdateLessonInfo(lesson.titreLecon, lesson.IscommentLeconNull() ? "" : lesson.commentLecon);
                lblLessonTitle.Visible = lblLessonComment.Visible = btnStartLesson.Enabled = true;
            }
        }
        StartLesson(object sender, EventArgs e)
        {
            object dbo = (tvwProgress.SelectedNode as DataNode).DataBoundObject;

            if (dbo.GetType() == typeof(LeconsRow))
            {
                LeconsRow lesson = (LeconsRow)dbo;
                using (frmLesson modal = new frmLesson(lesson)) {
                    modal.ShowDialog();
                    if (modal.DialogResult == DialogResult.OK)
                    {
                        user.BeginEdit();
                        user.codeCours = lesson.numCours;
                        user.codeLeçon = lesson.numLecon + 1;
                        user.codeExo   = 0;
                        user.AcceptChanges();
                    }
                    //else if (modal.DialogResult == DialogResult.Cancel)	// TODO gérer revenir au
                    //	user.codeExo = modal.LastExercise;		// dernier exo
                    UpdateUserProgress(user);
                    //uta.Update(TorreDeBabel.tblUsers);
                }
            }
        }