Convertitore di Misure in C# – #5 – Risorse e Stili
Convertitore di Misure in C# – #5 – Risorse e Stili: Inserimento di elementi di tipo Resource e Style all’interno di un progetto in WPF.
(altro…)Convertitore di Misure in C# – #5 – Risorse e Stili: Inserimento di elementi di tipo Resource e Style all’interno di un progetto in WPF.
(altro…)Convertitore di Misure in C# – #4 – Integrare FontAwesome: utilizzare le icone di FontAwesome nel proprio progetto in WPF.
(altro…)Convertitore di Misure in C# – #3 – Blend e Animazioni: Blend estende le funzioni di Visual Studio permettendo di facilitare la creazione di animazioni e comportamenti degli elementi.
(altro…)Convertitore di Misure in C# – #2 – Debug e Impostazioni WPF: Utilizzo degli strumenti di debug in tempo reale e configurazione interfaccia grafica di Visual Studio per WPF.
Tempo di lettura stimato: 5 minuti
In questo secondo tutorial su WPF ci concentreremo su 2 aspetti:
Oltre a questi 2 aspetti, proseguiremo anche con lo sviluppo del nostro programma andando a scrivere il codice per la conversione delle unità di misura.
Avviando il programma con il tasto verde con scritto Connetti… andremo ad attivare alcuni elementi di debug in tempo reale utili per controllare e modificare gli elementi grafici senza dover chiudere l’applicazione.
Avremo infatti in alto sulla barra del titolo della nostra applicazione alcuni pulsanti utili per il debug.
Il primo ci permette di selezionare gli elementi e di vedere lo spazio che occupano e i loro margini.
Inoltre, grazie al ricaricamento rapido delle modifiche, possiamo fare qualsiasi modifica al codice XAML e vedere in diretta i risultati, senza dover riavviare il debug.
L’interfaccia grafica creata con WPF è di tipo vettoriale, questo significa che gli elementi sono disegnati dalla scheda video e che a qualsiasi risoluzione vengano impostati non perdono mai nitidezza.
Da Visual Studio è possibile regolare il livello di zoom del progetto per andare a vedere nel dettaglio un elemento o allontanare la vista per vedere il risultato d’insieme.
Per le dimensioni reali degli oggetti fare sempre attenzione a controllarli con lo zoom al 100%.
WPF permette anche di visualizzare una griglia di allineamento per poter allineare con maggiore precisione tutti gli elementi grafici, è anche possibile agganciare automaticamente gli elementi alla griglia.
Il tasto converti ha la funzione di leggere il valore inserito nella Textbox di origine, verificare la misura nella Combobox di origine, quella nella Combobox di destinazione e quindi mostrare il valore della conversione nella Textbox di destinazione.
Per fare questo utilizzeremo diverse condizioni, faremo quindi grande uso di If e Switch.
Il codice completo del tasto converti è:
private void btn_Converti_Click(object sender, RoutedEventArgs e)
{
/*
Chilometro = 0
Metro = 1
Decimetro = 2
Centimetro = 3
Millimetro = 4
*/
if (cmb_Origine.SelectedIndex == 0) // Chilometro
{
switch (cmb_Destinazione.SelectedIndex)
{
case 1:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 1000);
break;
case 2:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 10000);
break;
case 3:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 100000);
break;
case 4:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 1000000);
break;
default:
txt_Destinazione.Text = txt_Origine.Text;
break;
}
}
else if (cmb_Origine.SelectedIndex == 1) // Metro
{
switch (cmb_Destinazione.SelectedIndex)
{
case 0:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 1000);
break;
case 2:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 10);
break;
case 3:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 100);
break;
case 4:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 1000);
break;
default:
txt_Destinazione.Text = txt_Origine.Text;
break;
}
}
else if (cmb_Origine.SelectedIndex == 2) // Decimetro
{
switch (cmb_Destinazione.SelectedIndex)
{
case 0:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 10000);
break;
case 1:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 10);
break;
case 3:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 10);
break;
case 4:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 100);
break;
default:
txt_Destinazione.Text = txt_Origine.Text;
break;
}
}
else if (cmb_Origine.SelectedIndex == 3) // Centimetro
{
switch (cmb_Destinazione.SelectedIndex)
{
case 0:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 100000);
break;
case 1:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 100);
break;
case 2:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 10);
break;
case 4:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) * 10);
break;
default:
txt_Destinazione.Text = txt_Origine.Text;
break;
}
}
else if (cmb_Origine.SelectedIndex == 4) // Millimetro
{
switch (cmb_Destinazione.SelectedIndex)
{
case 0:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 1000000);
break;
case 1:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 1000);
break;
case 2:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 100);
break;
case 3:
txt_Destinazione.Text = Convert.ToString(Convert.ToDecimal(txt_Origine.Text) / 10);
break;
default:
txt_Destinazione.Text = txt_Origine.Text;
break;
}
}
else
{
txt_Destinazione.Text = txt_Origine.Text;
}
}
Per poter convertire correttamente i valori dobbiamo prima convertire la stringa di origine in decimale, eseguire quindi l’operazione e convertire il risultato in una stringa.
Un problema che si potrebbe verificare durante l’utilizzo del programma è che l’utente potrebbe selezionare un valore in origine che è già presente in destinazione.
Infatti quando selezioniamo un valore in origine, quello stesso valore viene bloccato nella destinazione, ma se quel valore fosse già selezionato, rimarrebbe comunque selezionato.
Per questo motivo andremo ad aggiungere un if all’evento DropDownClosed della combobox di origine per cambiare l’indice nel caso in cui sia uguale a quello di origine.
if (cmb_Origine.SelectedIndex == cmb_Destinazione.SelectedIndex)
{
if (cmb_Destinazione.SelectedIndex == 0)
{
cmb_Destinazione.SelectedIndex = 1;
}
else
{
cmb_Destinazione.SelectedIndex = cmb_Destinazione.SelectedIndex - 1;
}
}
In questo modo, quando si seleziona l’indice zero, la destinazione se dovesse essere 0 diventerà 1, quando si seleziona qualsiasi altro indice, la destinazione passerà all’indice precedente (quindi se era 4 diventa 3, se era 2 diventa 1).
Convertitore di Misure in C# – #1 – Introduzione a WPF: Progetto per introdurre all’utilizzo di WPF per lo sviluppo di applicazioni Desktop per Windows in C#.
(altro…)Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti: La registrazione degli ospiti è quasi completata, in questo tutorial andiamo a modificare il caricamento di costi extra e sconti.
(altro…)Creare un gestionale per strutture ricettive in C# – #23 – Carica Prenotazioni: Parte numero 23 di questo tutoria che riprende dopo quasi un anno.
(altro…)Creare un gestionale per strutture ricettive in C# – 22 – Correzione Query: Correzione dei problemi della query e del form per le prenotazioni.
(altro…)Creare un gestionale per strutture ricettive in C# – 21 – Inserire Prenotazione nel Database: Ci avviciniamo sempre più alla fine del corso, ed in questo video andiamo quindi a caricare finalmente la prenotazione nel database.
(altro…)Come inviare gli stessi dati a 2 ListBox in 2 form diversi in C#: Condividere gli stessi elementi in 2 controlli diversi su 2 form diversi.
(altro…)