Пример #1
0
 private void bAnnuler_Click(object sender, EventArgs e)
 {
     #region DOCUMENTATION
     // Annuler la dernière opération ==> historique
     #endregion DOCUMENTATION
     #region
     if (historique.Count == 0)
     {
         return;
     }
     CaseInfo c = historique[historique.Count - 1];
     historique.Remove(c);
     grille[c.row, c.col].SetInfo(c, false);
     #endregion
 }
Пример #2
0
 public void SetInfo(CaseInfo info, bool orig)
 {
     // Puisqu'on aura besoin de sauvegarder et charger des grilles,
     // on devra sauvegarder l'information pertinent sur les cases.
     // On aura aussi besoin de faire cela pour l'historique.
     // Cette fonction coppie donc l'info reçue d'un CaseInfo
     // dans un objet Case.
     possible.Clear();
     foreach (int i in info.possible)
     {
         possible.Add(i);
     }
     Valeur    = info.valeur;
     originale = orig;
     ForeColor = Color.Red;
     // Reste maintenant à ajuster le contenu du tooltip
     SetToolTip();
 }
Пример #3
0
        private void Case_MouseDown(object sender, MouseEventArgs e)
        {
            // 1 - Commençons par nous prendre une référence sur la case cliquée.
            Case c = (Case)sender;   // On aurait pu écrire : Case c = sender as Case;

            // 2 - Agir en fonction du bouton cliqué
            if (e.Button == MouseButtons.Left)
            {
                // Ici, on veut une action directe
                // On doit afficher successivement les différentes valeurs possibles.
                // Si la valeur est originale, on ne peut la changer!
                if (c.originale)
                {
                    return;
                }
                if (historique.Count == 0)
                {
                    historique.Add(new CaseInfo(row, col, valeur, possible));
                }
                else
                {
                    CaseInfo last = historique[historique.Count - 1];
                    if ((last.row != row) || (last.col != col))
                    {
                        historique.Add(new CaseInfo(row, col, valeur, possible));
                    }
                }
                // Afficher la valeur suivante
                c.NextValue();
                return;
            }
            // Ici, c'est le bouton droit.
            // On affiche un menu qui fournit et permet de gérer les valeurs possibles.
            if (c.originale)
            {
                return;
            }
            // Ouvrir le menu contextuel
            // qui affiche les valeurs possibles et permet de changer cette liste.
            fValeursPossibles menu = new fValeursPossibles();

            // Cocher les entrées du menu selon la possibilité de chaque valeur
            // Cela sera fait par le formulaire. On a juste à lui passer l'info
            // pertinente soit la liste des valeurs possibles.
            menu.possible = possible;
            // Mettons la case en orange pour indiquer celle sélectionnée.
            BackColor = Color.Orange;
            // Lancer le menu et au retour
            //  Ajuster les tooltips si nécessaire
            //  Restaurer la couleur de fond.
            CaseInfo hist = new CaseInfo(row, col, valeur, possible);

            if (menu.ShowDialog() == DialogResult.OK)
            {
                SetToolTip();
                historique.Add(hist);
            }
            if (reg % 2 == 0)
            {
                BackColor = Color.Aqua;               // Régions 0,2,4,6,8
            }
            else
            {
                BackColor = Color.Beige;
            }
        }