C# - Come si fa: esempi vari, parte 1
Arrotondare una variabile decimale
- Utilizzare il metodo 'Round':
decimal _ValoreArrotondato = decimal.Round(_Valore, 1);
Generazione di numeri casuali
- Definire l’oggetto:
- Esempio, per ottenere un numero tra 1 e 100:
Messaggi (MessageBox)
Messaggio di informazione
- Messaggio con il bottone "OK" e una icona con la 'i' di informazione:
Messaggio di attenzione
- Messaggio con il bottone "OK" e una icona con punto esclamativo:
Messaggio di conferma
- Messaggio con i due bottoni "Sì" e "No" e una icona con punto interrogativo:
if (dialogResult == DialogResult.Yes)
{
// Se premuto 'Sì'
}
else
{
// Se premuto 'No'
}
Avviare o terminare un altro processo
- Utilizzare la classe 'Process' contenuta in 'System.Diagnostics'.
// Avvia il 'notepad'
Process p = new Process();
p.StartInfo.FileName = "notepad.exe";
p.StartInfo.Arguments = "doc1.txt";
p.Start();
// Attende la pressione di un tasto
Console.ReadKey();
// Termina tutti i processi di tipo 'notepad'
foreach (Process p1 in Process.GetProcesses())
{
if (p1.ProcessName == "notepad")
}
- Utilizzare anche la proprietà Id del processo per averne un riferimento univoco.
- Funzione che calcola il Checksum di un barcode di tipo EAN13 partendo dalla prime cifre.
- L'algoritmo è il seguente:
- si sommano tra loro tutte le 12 cifre con l'accortezza di moltiplicare per 3 le cifre in posizione pari;
- una volta ottenuta la somma, si calcola il complemento alla decina superiore (p. es. se la somma è 56, il complemento alla decina superiore è 4).
static byte CheckSum(long Numero)
{
string s = Numero.ToString();
byte cifra = 0;
byte somma = 0;
for (byte i = 1; i <= s.Length; i++)
{
cifra = Convert.ToByte(s.Substring(i - 1, 1));
if (i % 2 == 0)
somma += (byte) (cifra * 3);
else
somma += cifra;
}
return (byte) ((10 - (somma % 10)) % 10);
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(CheckSum(Convert.ToInt64(txt1.Text.ToString())).ToString());
}
Passare degli argomenti ad un programma
- Per passare uno o più argomenti a un programma, basta aggiungere nella Main() un array di stringhe.
- Tramite codice, si accede poi a tutti gli elementi dell'array.
static void Main(string[] args)
{
for (int i = 0; i < args.Length; i++ )
MessageBox.Show("Argument: " + args[i]);
}
- È possibile controllare se in un evento, per esempio Click() o DoubleClick(), è premuto un bottone, per esempio Ctrl. Ecco un esempio dove viene controllata la pressione del Ctrl nell'evento Click() della Form.
private void Form1_Click(object sender, EventArgs e)
{
if ((ModifierKeys & Keys.Control) == Keys.Control)
{
MessageBox.Show("Ctrl is pressed!");
}
}
Rilevare i tempi di esecuzione
- Spesso è utile rilevare esattamente i tempi di esecuzione di procedure o funzioni per capire dove è necessario ottimizzare il codice.
- Per fare questo è comodo utilizzare la classe ‘Stopwatch’ contenuta in ‘System.Diagnostics’.
- Ecco un esempio di utilizzo.
Stopwatch swTimer = new Stopwatch();
swTimer.Start();
// Codice da cronometrare
// ...
swTimer.Stop();
MessageBox.Show(swTimer.Elapsed.ToString());
Verificare che una stringa sia numerica
- A volte è utile controllare che una stringa sia numerica, cioè composta solo da cifre: da 0 a 9.
- Partendo dalla funzione sotto, si può apportare qualche modifica affinché il controllo sia più complesso. Per esempio per verificare se una stringa è composta da numeri e lettere.
- Si possono ottenere però risultati più ampi utilizzando le Regular Expression.
- La semplice funzione "IsNumeric" restituisce un boolean.
if (IsNumeric("1234"))
{ }
else
{ }
- Definizione della funzione.
{
int i;
for (i = 0; i < s.Length; i++)
{
if (!Char.IsDigit(s, i))
break;
}
if (i < s.Length)
return false;
else
return true;
}
- Selezionare la form, andare nelle proprietà (con F4) e impostare la proprietà 'Icon'.
- Menu -> Project -> Properties -> Selezionare la scheda 'Application', impostare l'icona nella Text Box 'Icon'.
- In .NET la versione del file eseguibile può essere diversa da quella dell’assembly.
- Esiste anche la versione del prodotto.
- Per leggere la versione del file e anche altre informazioni riguardanti il file eseguibile, utilizzare il seguente codice.
- Output:
FileMinorPart: 2
FileBuildPart: 3
FilePrivatePart: 4
FileVersion: 1.2.3.4
CompanyName:
FileDescription: ConsoleApplication1
FileName: D:\C# Experiments\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
- Per leggere la versione dell’assembly, utilizzare il seguente codice.
- Output:
Minor: 6
Build: 7
Revision: 8
- Le applicazioni, quando vengono ridotte a icona, sono visibili nella ‘Barra delle applicazioni’.
- In alcune situazioni, si vuole che l’applicazione ridotta a icona, non sia visibile nella ‘Barra delle applicazioni’, ma lo sia nella ‘System Tray’. Questa è l’area generalmente in basso a destra, dove risiedono alcune applicazioni che restano ‘in ascolto’, come antivirus, firewall, vpn, eccetera.
- Con il codice seguente si imposta che l’applicazione venga ridotta nella System Tray. Un messaggio configurabile apparirà al momento della riduzione ad icona e un altro messaggio al passaggio del mouse sulla piccola icona. Infine è possibile configurare un menu per richiamare specifiche funzioni.
- Al progetto è necessario aggiungere il controllo ‘NotifyIcon’ (cercarlo nella Toolbox); in questo esempio gli è stato dato il nome ‘notIcon’.
- Ecco tutto il codice da aggiungere all’interno della classe Form.
- In questo esempio è stato aggiunto un menu contestuale con tre voci, che – se cliccate – fanno apparire un semplice messaggio.
- Si noti la possibilità di configurare i messaggi che appaiono al momento della riduzione ad icona (titolo, testo, durata e visibilità nel Task Manager) e al passaggio del mouse sull’icona (testo).
- Con il seguente algoritmo si calcola il giorno e il mese della Pasqua, dato l'anno.
- L'anno è letto dalla TextBox 'txtYear'; il risultato è nella variabile 'easter'.