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 }
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(); }
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; } }