7 dic 2010

FitStat per iPhone in arrivo

Appassionati di body-building, personal trainer e preparatori atletici (so che seguite tutti questo blog e non sarebbe concepibile altrimenti) - ancora pochi giorni ed avrete FitStat gratuito per iPhone!!
L'applicazione è in fase di revisione da parte di Apple, e sarà rilasciata gratuitamente entro le fesività natalizie!

Nel frattempo, se ancora non avete scaricato la versione "personal" di FitStat per Windows, scapicollatevi qui.

6 nov 2010

Consigli per gli acquisti

Uno degli autori del blog ha pubblicato su iTunes Store la prima di una serie di applicazioni per iPhone ed iPod Touch in cantiere; l'applicazione in questione è Blumy (il linguaggio dei fiori), un rapido riferimento per chi vuole regalare un mazzo di fiori, o per lo chi riceve...

Un biancospino a chi se la compra!

12 apr 2010

Le novità di C# 4 e VB2010

Segnalo un interessante articolo che illustra le novità dei linguaggi C# e VB correlate all'uscita della nuova versione del .NET Framework, la 4.0.

Ecco il link dell'articolo: qui.

Buona lettura :)

29 mar 2010

C# Custom Controls: NumericTextBox

In questo post vedremo come creare una TextBox personalizzata che accetti in input solo caratteri di tipo numerico, completamente riutilizzabile.

Procediamo aggiungendo al nostro progetto una nuova classe di nome "NumericTextBox" e facendo in modo che erediti dalla classe TextBox:
namespace CustomControl
{
 public class NumericTextBox : TextBox
 { }
}

Inseriamo una property di tipo bool che indicherà se sono permessi o meno numeri negativi:
public bool AllowNegative { get; set; }

Ora nel costruttore della nostra classe intercettiamo l'evento KeyPress:
public NumericTextBox()
{
 this.KeyPress += new KeyPressEventHandler(NumericTextBox_KeyPress);
}

Infine andiamo ad implementare il metodo NumericTextBox_KeyPress, nel quale grazie alla classe NumberFormatInfo andremo a discriminare i caratteri del separatore decimale e dei segni positivo/negativo della cultura correntemente impostata:
void NumericTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
 string decimalSeparator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
 string negativeSign = NumberFormatInfo.CurrentInfo.NegativeSign;
 string positiveSign = NumberFormatInfo.CurrentInfo.PositiveSign;

 //se è un carattere di tipo controllo
 if (char.IsControl(e.KeyChar))
   return;
 //se è il segno negativo
 else if (AllowNegative && e.KeyChar.ToString() == negativeSign && ((TextBox)sender).Text == string.Empty)
   return;
 //se è il segno positivo
 else if (e.KeyChar.ToString() == positiveSign && ((TextBox)sender).Text == string.Empty)
   return;
 //se è il carattere di separatore decimale e questo non è già presente
 else if (e.KeyChar.ToString() == decimalSeparator && !((TextBox)sender).Text.Contains(decimalSeparator))
   return;
 //se è un carattere numerico
 else if (char.IsNumber(e.KeyChar))
   return;
 //in tutti gli altri casi
 else
   e.Handled = true;
}

A questo punto è possibile inserire la nostra NumeriTextBox nella barra degli strumenti e trascinarla sulla form come un normale controllo:



Selezionando la NumericTextBox, nel tab delle proprietà sarà possibile valorizzare la proprietà AllowNegative precedentemente inserita in modo da permettere o meno l'inserimento di numeri con segno negativo:

Evento lancio Visual Studio 2010

L'attesa è finita...il 12 aprile 2010 dalle 14:30 alle 18:00 si potrà assistere per la prima volta in Smooth Streaming HD, all’evento di lancio di Visual Studio 2010 direttamente dal proprio PC, e sarà possibile interagire con gli speaker in tempo reale.

Qui trovate la pagina dell'evento al quale è possibile registrarsi fin da subito, mente a quest'altro link trovate l'agenda della presentazione.

26 mar 2010

Installazione Silverlight 3 Tools per VS2008SP1: Errore aggiornamento KB967143

Se durante l'installazione del pacchetto Silverlight3_Tools.exe, contenente l'SDK di Silverlight e i relativi tools per Visual Studio 2008 SP1, questa viene interrotta a causa di un errore durante l'installazione dell'aggiornamento KB967143, procedete come segue:

  • Rieseguite il file "Silverlight3_Tools.exe";
  • Il contenuto viene estratto in una cartella del tipo "C:\7075dae790b40e6006";
  • Copiate l'intera cartella in un altro percorso;
  • Annullate il programma di installazione in corso;
  • A questo punto procedete all'installazione manuale dell'aggiornamento KB967143, dell'SDK e dei Tools (VS90SP1-KB967143-ita.msp --> silverlight_sdk.msi --> VS_SilverlightTools_Setup.exe).

In questo modo l'installazione andrà a buon fine (almeno nel mio caso) e sarete pronti per sviluppare applicazioni in Silverlight con Visual Studio 2008.

25 mar 2010

Finestre insolite in C#

Avreste sempre voluto creare un'applicazione desktop con un'interfaccia un po' inusuale? Una finestra di forma rotonda? Bene, seguitemi in questo breve tutorial: iniziamo a creare un'applicazione nuova (le screenshot si riferiscono a Visual Studio 2008):
File / Nuovo / Progetto


selezioniamo Applicazione Windows Form.

Ora ci serve un'immagine da usare come sfondo della nostra finestra: nel nostro esempio scegliamo una PNG con sfondo trasparente:


Torniamo a Visual Studio: sulla form principale, impostiamo la proprietà BackgroundImage caricando l'immagine scelta; dimensioniamo la form sulla dimensione dell'immagine. Lasciamo la proprietà BackgroundImageLayout a None (non cedete alla tentazione di impostarla a Stretch: inibirebbe la trasparenza dell'applicazione a runtime).


Ora impostiamo la proprietà FormBorderStyle a None, in questo modo rimuoviamo la barra del titolo ed i bordi della form.


Adesso impostiamo la proprietà TrasparencyKey al colore di sfondo della form (ovvero, nel nostro caso, Control):

L'ultimo passo da compiere è la gestione del trascinamento e della chiusura della nostra form: aggiungiamo alle using l'assembly InteropServices:
using System.Runtime.InteropServices;

...e incolliamo all'interno della classe il seguente codice:
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

Infine gestiamo l'evento MouseDown, sia per il trascinamento della form col tasto sinistro del mouse, sia per chiudere l'applicazione con il tasto destro (ricordiamo che manca la barra del titolo, con i pulsanti di chiusura, riduzione e ingrandimento):
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
 if (e.Button == MouseButtons.Left)
 {
   ReleaseCapture();
   SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
 }
 else
 {
   Close();
 }
}

Abbiamo finito! Compiliamo ed eseguiamo l'applicazione: ecco la nostra finestra dall'aspetto insolito...

23 mar 2010

Comunicazione di servizio

Visto la frequenza scandalosamente bassa dei miei interventi sul blog, e vista la frizzante e vivace comunicatività dei giovani programmatori, da oggi questo blog ha un nuovo co-autore (che nel giro di breve potrebbe diventare l'autore principale): Welcome Diego :)