Ejemplo n.º 1
0
        private void AggiungiAgevolazioneEccezionale(object sender, EventArgs args)
        {
            ElementoNoleggio elementoNoleggio = (ElementoNoleggio)Adapter <ElementoNoleggio, ElementoNoleggioAdapted>
                                                .Revert((ElementoNoleggioAdapted)_target.ElementiNoleggioDataGridView.CurrentRow.DataBoundItem);

            using (ChooseForm form = new ChooseForm())
            {
                //creazione filtro (che in realtà è solo un messaggio)
                Label messaggio = new Label();
                messaggio.Text  = "Seleziona l'agevolazione eccezionale";
                messaggio.Width = 300;
                Panel p = new Panel();
                p.Controls.Add(messaggio);
                form.AddFilter(p);

                //form
                form.DataGridView.MultiSelect = false;

                //popolamento tabella
                form.DataGridView.DataSource = Negozio.GetInstance().AgevolazioniEccezionali.Cast <Agevolazione>().ToList();

                if (form.ShowDialog() == DialogResult.OK)
                {
                    elementoNoleggio.AgevolazioneEccezionale = (IAgevolazioneEccezionale)form.DataGridView.CurrentRow.DataBoundItem;
                    Console.WriteLine((elementoNoleggio.AgevolazioneEccezionale as Agevolazione).Nome);
                    _target.ElementiNoleggioDataGridView.Refresh();

                    /*La nuova agevolazione eccezionale non è visualizzata nella tabella perchè è un'interfaccia,
                     * anche se da come si vede dalla stampa su console l'oggetto viene aggiornato*/
                    _target.PrezzoTotaleLabel.Text = string.Format("Prezzo totale: {0}",
                                                                   _noleggio.CalcolaPrezzo(_durataEffettiva, Negozio.MINUTI_TOLLERANZA).ToEuroString());
                }
                ShowPrezzoSingoloElemento(this, EventArgs.Empty);
            }
        }
Ejemplo n.º 2
0
        //  Crea, inizializza e aggiunge al Target.TableLayoutPanel nell’ordine: una Label e una TextBox.
        private void AddRow(EditingProperty editingProperty)
        {
            //  Per inizializzare la Label:
            //    assegnare alla proprietà Text il valore della proprietà Label di editableAttribute;
            //    assegnare alla proprietà AutoSize il valore true, in modo che il testo venga visualizzato correttamente.
            //  Per inizializzare la TextBox:
            //    dimensionare il controllo in modo che
            //      la larghezza sia pari al valore della proprietà Width di editableAttribute e
            //      l’altezza sia pari al valore della proprietà PreferredHeight del controllo stesso;
            //    se la editingProperty è read-only,
            //      disabilitare la TextBox (utilizzare la proprietà Enabled);
            //    assegnare alla proprietà Tag il valore di editingProperty;
            //    infine, collegare all’evento Validating della TextBox il gestore ValidatingHandler.

            Label label = new Label();

            label.Text     = editingProperty.Label;
            label.AutoSize = true;
            Target.TableLayoutPanel.Controls.Add(label);

            Control tb = null;

            if (editingProperty.Mode == "Combo")
            {
                tb = new ComboBox();
                if (editingProperty.Label.StartsWith("Tipo"))
                {
                    Type categoria = typeof(Elemento).GetSubtypes().Where(t => t.Name.ToUpper() == editingProperty.Label.Substring(4).ToUpper()).First();
                    ((ComboBox)tb).Items.AddRange(Negozio.GetInstance().GetTipiPerCategoria(categoria).ToArray());
                    ((ComboBox)tb).SelectedItem = ((ComboBox)tb).Items.OfType <TipoElemento>().First();
                }
                else if (editingProperty.Label.StartsWith("Stato"))
                {
                    ((ComboBox)tb).Items.AddRange(Negozio.GetInstance().StatiElemento.ToArray());
                    ((ComboBox)tb).SelectedItem = ((ComboBox)tb).Items.OfType <StatoElemento>().First();
                }
            }
            else
            {
                tb        = new TextBox();
                tb.Height = ((TextBox)tb).PreferredHeight;
            }

            tb.Width       = editingProperty.Width;
            tb.Enabled     = checkIfEnabled(editingProperty);
            tb.Tag         = editingProperty;
            tb.Validating += ValidatingHandler;
            Target.TableLayoutPanel.Controls.Add(tb);
        }