Marco's Web Site
  • Home
  • WiKi
    • Varie
    • ChronoForms
    • MS Excel
    • Sistemi Operativi
      • Linux
      • DOS
    • Sviluppo
      • Visual Studio
      • VB.NET
      • HTML
      • Crystal Reports
      • Asp.NET
      • Php
      • Blazor
      • C#
      • Visual Studio Code
    • Joomla
    • SQL
      • PostgreSql
      • MySql
  • Area Download
  1. You are here:  
  2. Home
  3. WiKi
  4. C#

C# è un linguaggio di programmazione sviluppato da Microsoft, all'interno della piattaforma .NET, e divenuto uno dei principali linguaggi di sviluppo software. Questo linguaggio, non è assolutamente legato al mondo Windows, ma tramite l'iniziativa .NET Core, si può spaziare negli ambienti multipiattaforma, supportando così anche MacOS e Linux e open source di Microsoft, che ora abbraccia quindi lo sviluppo server, cloud, web, passando naturalmente per il mondo delle applicazioni per il desktop, fino ad arrivare al lato mobile con Xamarin, l'ambiente di esecuzione dedicato alle applicazioni per dispositivi Andoid e IOS.

Verificare se una stringa rappresenta un valore numerico

Per Verificare se una stringa è rappresenta un numero, si può usare il metodo statico TryParse che viene implementato da tutti i tipi numerici primitivi e anche da tipi quali DateTime e IPAddress.

L'esempio sottostante illustra come eseguire la verifica:

 

int i = 0;

string valore = "55";

bool result = int.TryParse(valore, out i); //i now = 55

 

Dalla pagina della MicroSoft premi qui.

 

Contrassegnare un Metodo come Obsoleto o Deprecato

Un sistema per far sì che un metodo venga marcato come Obsoleto, è aggiungendo l'attributo [Obsolete]:

[Obsolete]

public void MyMetod()

{....}

Si può anche (o meglio si deve), inserire una descrizione che mi indichi quali sono i nuovi metodi da chiamare in alternativa:

[Obsolete("Utilizzare il nuovo metodo MyMethod_2")]

 

Aggiungendo il valore booleano true, come nell'esempio, verrà fatta fallire la compilazionem impostando il valore a false od omettendolo, in fase di compilazione apparirà solo un avvertimento, ma la compilazione termierà con successo.

[Obsolete("Utilizzare il nuovo metodo MyMethod_2", true)]

Verificare se una stringa rappresenta un valore numerico

Per Verificare se una stringa è rappresenta un numero, si può usare il metodo statico TryParse che viene implementato da tutti i tipi numerici primitivi e anche da tipi quali DateTime e IPAddress.

L'esempio sottostante illustra come eseguire la verifica:

 

int i = 0;

string valore = "55";

bool result = int.TryParse(valore, out i); //i now = 55

 

Dalla pagina della MicroSoft premi qui.

 

DevExpress GridControl Esempi

DevExpress.XtraGrid.GridControl

L'Esempio riportato, di seguito, da le istruzioni per poter selezionare un'intera riga (e non semplicemente una cella), rendere non modificabile una cella e mettere un bordo alla riga selezionata.

DevExpress GridControl

Le istruzioni sono le seguenti con linguaggio C#:

//Disabilito la modifica delle celle da parte dell'utente
GridControlName.OptionsBehavior.Editable = false;

//Seleziono tutta la riga e non solo la cella
GridControlName.OptionsSelection.EnableAppearanceFocusedRow = false;

//Disegno dei puntini attorno a tutta la riga selezionata
GridControlName.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;

 

Qualora si volesse per esempio leggere un valore specifico di una riga selezionata nel componente DevExpress.XtraGrid.GridControl, si può procedere come nell'esempio sottostante:

int[] selectedRows =GridControlName.GetSelectedRows();
txtCasellaTesto.Text = GridControlName.GetRowCellValue(selectedRows[0], "NomeColonna");

Si può notare che la variabile selectedRows è dichiarata come Array, in quanto in un GridControl, è possibile selezionare più di una riga. Nel caso in cui si sia impostata una sola selezione nel GridControl, il numero di riga sarà sempre 0.

 

Sito del produttore DevExpress
Presentazione del componente dal sito del porduttore GridControl

Accettare in una TextBox soltanto numeri o caratteri predefiniti

Si verifica spesso durante la stesura di un programma, la necessità di fare in modo che un utente in una data TextBox sia in grado di digitare soltanto numeri interi, soltanto lettere ecc. Anche se in effetti il controllo sul testo immesso può essere effettuato successivamente, è più comodo limitare direttamente la scelta nella TextBox. In questo articolo spiego l’espediente che utilizzo io nei miei programmi, tra l’altro molto semplice da implementare e molto versatile dal momento che permette di fare in modo da accettare in una TextBox soltanto ciò che vogliamo. Per far questo utilizzo l’evento “KeyPress” della textbox, e l’oggetto System.Windows.Forms.KeyPressEventArgs, e più precisamente la sua proprietà “KeyChar” che contiene il tasto digitato, per controllare il tasto digitato faccio riferimento al suo codice Ascii, se il codice Ascii rientra tra quelli consentiti, viene restituito tal quale, se invece il codice Ascii appartiene ad un carattere non ammesso, viene impostato a zero (Null) in maniera tale che nella TextBox non appaia nulla. Passiamo subito agli esempi pratici, il funzionamento è illustrato nei commenti del codice, ho messo la massima cura nella realizzazione prevedendo tutte le cose che non si possono fare (esempio: nel digitare un numero decimale, non è possibile digitare il punto più di una volta).

Consentire la sola immissione di numeri interi

 

Private Sub txtOnlyInteger_KeyPress(ByVal sender As Object, _
                 ByVal e As System.Windows.Forms.KeyPressEventArgs) _
                 Handles txtOnlyInteger.KeyPress
  
         ' Accetto solo l'immissione di numeri interi
  
         ' Recupero il codice ascii del tasto digitato
         ' il tasto digitato è memorizzato nella proprietà "KeyChar"
         ' dell'oggetto System.Windows.Forms.KeyPressEventArgs
         Dim KeyAscii As Short = Asc(e.KeyChar)
  
         ' I numeri interi hanno il codice ascii compreso tra
         ' 48 e 57. Devo comunque fare in modo che l'utente
         ' sia in grado di digitare anche il tasto BackSpace
         ' (ascii=8) e il tasto Canc (ascii=24), se il codice
         ' ascii non rientra in quelli ammessi, lo imposto io
         ' su Zero, che è il carattere nullo.
         If KeyAscii < 48 And KeyAscii <> 24 And KeyAscii <> 8 Then
             KeyAscii = 0
         ElseIf KeyAscii > 57 Then
             KeyAscii = 0
         End If
  
         ' Aggiungo un'ulteriore finezza facendo in modo che lo
         ' zero sia ammesso, ma non come primo carattere, lo faccio
         ' controllando la lunghezza del testo
         If e.KeyChar = "0" And txtOnlyInteger.TextLength = 0 Then
             KeyAscii = 0
         End If
  
         ' Alla fine reimposto il KeyChar, che sarà uguale a zero
         ' per i caratteri non consentiti (e quindi nella TextBox
         ' non comparirà nulla)
         e.KeyChar = Chr(KeyAscii)
  
     End Sub

Consentire la sola immissione di numeri interi e numeri decimali

Private Sub txtOnlyDecimal_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOnlyDecimal.KeyPress
  
         ' Accetto solo l'immissione di numeri interi e decimali
  
         ' Recupero il codice ascii del tasto digitato
         ' il tasto digitato è memorizzato nella proprietà "KeyChar"
         ' dell'oggetto System.Windows.Forms.KeyPressEventArgs
         Dim KeyAscii As Short = Asc(e.KeyChar)
  
         ' In questo caso oltre a consentire numeri, tasto Canc
         ' e tasto BackSpace, devo consentire anche l'immissione
         ' del punto e della virgola
         If KeyAscii < 48 And KeyAscii <> 24 And KeyAscii <> 8 And e.KeyChar <> "." And e.KeyChar <> "," Then
             KeyAscii = 0
         ElseIf KeyAscii > 57 Then
             KeyAscii = 0
         End If
  
         ' Faccio in modo che se l'utente digita la virgola
         ' mi appaia il punto
         If e.KeyChar = "," Then
             KeyAscii = 46 ' 46 è il codice ascii del punto
         End If
  
         ' Il punto è si consentito
         ' ma non come primo carattere
         If txtOnlyDecimal.TextLength = 0 And KeyAscii = 46 Then
             KeyAscii = 0
         End If
  
         ' ovviamente se c'è già un punto
         ' non è consentito digitarne altri
         If (KeyAscii = 46) And _
             txtOnlyDecimal.Text.IndexOf(".") > 0 Then
             KeyAscii = 0
         End If
  
         ' Reimposto il keychar
         e.KeyChar = Chr(KeyAscii)
  
     End Sub

 

Consentire la sola immissione di lettere

Private Sub txtOnlyLetters_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOnlyLetters.KeyPress
  
         ' Accetto solo l'immissione di lettere
  
         Dim KeyAscii As Short = Asc(e.KeyChar)
  
         ' Le lettere maiuscole hanno i codici ascii tra
         ' 65 e 90, quelle minuscole tra 97 e 122.
         ' Devo comunque fare in modo che l'utente
         ' sia in grado di digitare anche il tasto BackSpace
         ' (ascii=8) e il tasto Canc (ascii=24)
         If KeyAscii < 65 And KeyAscii <> 24 And KeyAscii <> 8 Then
             KeyAscii = 0
         ElseIf KeyAscii > 90 And KeyAscii < 97 Then
             KeyAscii = 0
         ElseIf KeyAscii > 122 Then
             KeyAscii = 0
         End If
  
         ' Reimposto il KeyChar
         e.KeyChar = Chr(KeyAscii)
     End Sub

Tags popolari

Joomla! 1 Novità 1 Struttura tabella SQL 1