C# Base V2 

27.12.2020

Nella "scorsa puntata" eravamo rimasti a come creare una semplicissima calcolatrice che facesse le 4 operazioni base. Oggi invece ci portiamo avanti di qualche passo cercando, oltre di aggiungere nuove features, anche di ottimizzare sempre di più il codice ma, siccome il target di questa rubrica è puntato soprattutto ai principianti, di scriverlo in un modo semplice e facilmente leggibile.

Nel post precedente avevo parlato di "cronologia delle operazioni" ed infatti, sono andato ad aggiungere una "Easy cronologia". Per crearla useremo una Textbox, nell'immagine sotto vi faccio vedere come l'ho ideata io.

Come vedete ho anche adattato l'applicazione al periodo natalizio ☻; partiamo col definire una caratteristica fondamentale della Textbox creata (nel mio caso ho dato il nome di "history") che sarebbe la possibilità di NON poterci scrivere dentro. Infatti il contenuto sarà dato da N1, segno dell'operazione,N2 e risultato, questo perchè se si potesse scrivere qualsiasi cosa dentro noi volessimo, in sostanza diventerebbe tutto confusionario ed avremmo di fatto un "bug" nel programma. L'immagine sotto descrive meglio il problema che ci sarebbe.

Per ovviare al problema basta scrivere al caricamento della pagina: 

history(<-nome textbox).IsEnabled = false;

Seconda cosa è il limite di contenuti della Textbox, mi spiego meglio. Una volta che si arriva al limite della Textbox (ovviamente parlando in altezza) , tutto quello che verrà inserito non si vedrà. Per risolvere il problema dobbiamo fare in modo che si pulisca la Textbox in modo tale da partire dal principio. Il modo che vi farò vedere non è quello più corretto, infatti più in là ne vedremo un altro, per ora però preferisco farne uno un po' più semplice. Nel mio caso ho posto il limite che quando arriva all'undicesimo elemento deve ripulire la casella (in base alle dimensioni della vostra Textbox potete aumentare/diminuire il limite) scrivendo le seguenti linee di codice:

Qui bisogna soffermarci un attimo, perchè viene introdotta una novità. Per evitare di scrivere la parte di codice che resetta la casella di testo per ogni operazione, creiamo quello che viene definito metodo, il quale io ho chiamato "delete" che verrà richiamato in ogni operazione (o quando ci serve), per esempio nell'addizione :

 il cui corpo ha proprio la funzione di resettare la Textbox (per chi non lo sapesse lo "\n" vuol dire andare a capo), ma in che modo ? Praticamente controllo quanti "a capo" ci sono, una volta che la condizione risulta vera, pulisce (history.clear();) la Textbox.

Un altro dettaglio importante è il come viene scritto il contenuto, infatti per scrivere nella "cronologia" non basta dire :

history.text=// operazione//;

Questo perchè altrimenti ad ogni operazione lui cancellerà il contenuto della Textbox.

Infatti, nella linea di codice : 

history.text+=//operazione//;

il "+="ha proprio la funzione di concatenare gli elementi, evitando che venga resettata ogni volta.

Inizialmente avevo parlato di come evitare che venga scritto all'interno della Textbox per far si che non ci siano bugs nel programma. Prendiamo per esempio una divisione il cui risultato ha tantissime cifre decimali se non periodiche illimitate, una volta che raggiunge il bordo (parlando di larghezza) andrebbe a capo e creerebbe un problema analogo allo scriverci dentro. Per evitare ciò dobbiamo porre un limite alle cifre decimali del risultato, io per esempio ho limitato a 2.

Per tradurre quanto detto in C# dobbiamo scrivere :

ris =Math.Round(( N1 / N2),2(<-numero decimali));//Controllo cifre decimali//

Prima di passare ad una altra feature, bisogna spendere due parole per l'interfaccia. Se noi allargassimo la finestra dell'applicazione avremmo tutto spazio bianco intorno all'interfaccia molto poco bello da vedere. Un modo per evitare che si allarghi la pagina è quello di definire le dimensioni massime in Pixel (px).

Altra caratteristica introdotta è quella della "ListBox" che iniziamo in questo post e che continueremo prossimamente. Fondamentalmente l'oggetto "listbox" una volta trascinato nella schermata, può essere modificato dei suoi contenuti (che possono essere bottoni, textbox ecc..) attraverso il suo attributo "items". Per ora io ho introdotto solo un pulsante "GUIDA". Questo bottone ha come suo corpo un serie di linee di codice che fanno aprire una nuova schermata (o pagina), ma andiamo con ordine. Come prima cosa dobbiamo aggiungere al progetto una seconda finestra WPF (nel mio caso chiamata "Window2"), successivamente, nel corpo del bottone "GUIDA" dobbiamo scrivere il codice per far aprire la nuova schermata.

Per prima cosa dobbiamo crearci un "oggetto" finestra, per poterlo fare bisogna scrivere: 

nome_nuova_schermata(nel mio caso window2) nome_che_vogliamo= new nome_nuova_schermata();

Le restanti 2 linee di codice descrivono come far comparire la nuova schermata. Questo metodo, come per la pulizia della "cronologia" non è il massimo, questo perchè una volta che apriamo la nuova schermata perdiamo eventuali dati della vecchia che invece dovrebbero essere salvati.

Il risultato è:

Io ho aggiunto anche il bottone "Indietro" che torna alla MainWindow, per crearlo basta scrivere lo stesso codice di come fatto in precedenza ma con il nome della prima pagina .

Come detto nel post precedente, per ogni domanda, consiglio o critica costruttiva potete contattarmi attraverso i miei riferimenti che trovate nel sito ed inoltre lascerò qui sotto il link aggiornato per scaricare la nuova versione del progetto.

https://mega.nz/folder/0IkRCCxa#QJiFhVylNvKDlv9lUEzoNA


© 2020 CV-BLOG di Patrick Montagnoli. Tutti i diritti riservati.
Creato con Webnode
Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia