Exemple #1
0
        /// <summary>
        /// Handler per il click su celle di selezione.
        /// </summary>
        /// <param name="Sh"></param>
        /// <param name="Target"></param>
        public static void SelectionClick(object Sh, Excel.Range Target)
        {
            DefinedNames definedNames = new DefinedNames(Target.Worksheet.Name, DefinedNames.InitType.Selection);
            Range        rng          = new Range(Target.Row, Target.Column);
            Selection    sel;
            int          val;

            if (definedNames.HasSelections() && definedNames.TryGetSelectionByPeer(rng, out sel, out val))
            {
                Target.Worksheet.Unprotect(Workbook.Password);
                if (sel != null)
                {
                    Workbook.ScreenUpdating = false;

                    //evito di annotare il cambiamento della cella di selezione: non ha senso e cmq va in errore perché il simbolo non viene riconosciuto
                    if (Simboli.ModificaDati)
                    {
                        //Workbook.WB.SheetChange -= StoreEdit;
                        Workbook.RemoveStdStoreEdit();
                    }


                    sel.ClearSelections(Target.Worksheet);
                    sel.Select(Target.Worksheet, rng.ToString());

                    //annoto modifiche e le salvo sul DB
                    //Workbook.WB.SheetChange += StoreEdit;
                    Workbook.AddStdStoreEdit();

                    Target.Worksheet.Range[sel.RifAddress].Value = val;

                    //se non ero in modifica tolgo l'handler alla modifica delle celle
                    if (!Simboli.ModificaDati)
                    {
                        //Workbook.WB.SheetChange -= StoreEdit;
                        Workbook.RemoveStdStoreEdit();
                    }

                    DataBase.SalvaModificheDB();
                    Workbook.ScreenUpdating = true;
                }
                Target.Worksheet.Protect(Workbook.Password);
            }
        }