C#

Programmazione c# Visual Studio

ErrorProvider

ErrorProvider – BindingSource

0

ErrorProviderL’ErrorProvider: questo sconosciuto! Molti programmatori non conoscono questo strumento messo a disposizione da .NET. E ancora più spesso non sanno a quale evento o strumento associarlo. Una delle tante possibilità di utilizzo è quella di associare l’errorProvider ad una bindingSource. Facciamo subito un esempio. Abbiamo una bindingSource con una dataSource popolata da alcuni record (o anche da uno solo). Il nostro scopo è quello di creare un’ “anagrafica”, cioè prevedere l’inserimento di nuovi record nel database e per far questo abbiamo trascinato sulla nostra form l’origine dati in modo da ottenere le varie textbox già “bindate“. Ipotizziamo di avere un campo di tipo intero, cosa succede se l’utente digita un testo? Essendo lo strumento (textbox in questo caso, ma vale lo stesso per tutti gli altri) collegato al bindingSource accadrà che il focus resterà bloccato sulla textbox finchè non inseriamo un intero (a meno che non cambiamo l’evento su cui si genera la validation sulla form, ma non è il notro caso). L’utente non viene avvisato in alcun mod di cosa stia accandendo, e qui entra il gioco l’errorProvider che se associato alla bindingSouce farà apparire vicino al controllo l’icona di alert con un testo che segnala l’errore! Bisogna fare molta attenzione, perchè l’errorProvider, o meglio la validazione, ci segnalerà esclusivamente l’errore di input non corretto nel campo, quindi è opportuno gestire separatamente tutti gli altri casi.

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)

Popolare ComboBox con Enum

0

In questi giorni, sul progetto che occupa la maggior parte della mia giornata, mi sono imbrattuto nella combobox. Questo strumento puo essere associato a diverse origi dati, una di queste è un enum.
Immaginate di avere una combobox chiamata MyCmb. Ora create un oggetto come questo
public enum Animali { Leone, Zebra, Gazzella };
Di default Leone avrà come value 0, Zebra 1 e Gazzella 2. Per cambiare il valore di partenza con cui contare basta fare così:
public enum Animali { Leone = 10, Zebra, Gazzella };

Lo scopo è quello di popolare la nostra comboBox:
MyCmb.DataSource = System.Enum.GetValues(typeof(Animali));

Per accedere al valore selezionato invece si procede in questo modo:
int valore = ((int)Enum.Parse(typeof(Animali), MyCmb.SelectedValue.ToString(), true));


[avhamazon wishlist="3NHMODHRFICUY" asin="0470187573" linktype="pic" locale="US"]

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)

Smart Client Software Factory New Project

S.C.S.F. Lesson 02: Creare un nuovo progetto

2

Per creare un nuovo progetto aprire Visual Studio 2005 Professional e create un new project. Tra i vari tipi di progetto scegliete “Guidance Packages” e poi “Smart Client Development May 2007“. Se tutto il necessario è stato installato correttamente dovrebbero apparire due nuovi modelli: Smart Client Application in C# e Smart Client Application in Visual Basic, come mostrato in questa immagine.

Smart Client Software Factory New Project

Non ci resta che definire il nome del progetto e il suo percorso. A questo punto una nuova winform del wizard di creazione progetto sarà visibile:

Create a new smart client solution

Qui definiamo il NameSpace e il percorso delle libreire  necessarie che in genere è C:\Programmi\Microsoft Smart Client Factory\Lib\





[avhamazon wishlist="3NHMODHRFICUY" asin="1590599551" linktype="pic" locale="US"]

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)

S.C.S.F. Lesson 01: Le risorse necessarie

0

Per poter cominciare a sviluppare un piccolo software simile ad Outlook, cioè con un workspace a sinistra che con eventi di tipo click ci fa apparire, su un altro workspace situato ora a destra, determinate viste è necessario installare sul proprio pc i seguenti software:

  • Visual Studio 2005 Professional
  • Microsoft Framework 3.0
  • Enterprise Library January 2006
  • Smart Client Software Factory May 2007
  • Microsoft Practices Library e CompositeUI.Extensions

Credo che dovrebbe bastare, non metto i link relativi a tutte queste risorse (comunque facilmente reperibili) per il semplice fatto che mi sono state fornite fisicamente e quindi non le ho mai cercate in rete.


[avhamazon wishlist="3NHMODHRFICUY" asin="0321197690" linktype="pic" locale="US"]

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)

Smart Client Software Factory documentazione

0

In queste settimane di stage/lavoro ho approfondito la Smart Client Software Factory in linguaggio C# con interessamenti sull’OutlookBar. In giro per la rete non c’è molto materiale su cui studiare, quello che c’è ovviamente è in inglese. Quindi la migliore fonte di informazione è la documentazione ufficiale. Mi sta frullando per la testa di scrivere un piccolo tutorial sull’utilizzo essenziale della Smart Client Software Factory con OutlookBar.
Allora cominciamo!

Come primo passo scaricatevi la Smart Client Software Factory – May 2007 qui. Attenzione, è necessario avere installato il framework 3.0, quindi se ancora non c’è sul vostro pc installatelo!
[avhamazon wishlist="3NHMODHRFICUY" asin="0735624143" linktype="pic" locale="US"]

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)

Creare file ZIP con C#

1

Prossimamente saranno dedicati dei posts alla gestione dei files, mio oggetto di studio degli ultimi giorni. Oggi invece voglio parlare dell’utilizzo dei files ZIP. In C# come si fa a creare o a leggere un file ZIP? Sembra che sia necessaria una libreria esterna che si trova qui: #ziplib. Esistono delle dll per ogni versione del framework. Io utilizzo la 2.0. Dopo aver aggiunto il riferimento alla libreria possiamo utilzzarla come meglio ci pare. Per l’occazione ho sviluppato un progettino elementare, composto da: 2 textbox, una per il path della directory da zippare e un’altra con il path del file di destinazione; un bottone per generare tutta la procedura di zip e un label da utilizzare per segnalare eventuali errori. Ecco il source code dell’evento click del bottone.

private void btnZip_Click(object sender, EventArgs e)
        {
            String dir = txbDirectory.Text;
            if ( !Directory.Exists(dir))
                lblError.Text = "La Directory " +  dir + " non esiste";
            
            try
             {
                string[] filenames = Directory.GetFiles(dir);
                string Destinazione = txbDestination.Text;
                using (ZipOutputStream s = new ZipOutputStream(File.Create(Destinazione)))
                {
                    s.SetLevel(0);
                    byte[] buffer = new byte[4096];
                    foreach (string file in filenames)
                    {
                        ZipEntry entry = new ZipEntry(Path.GetFileName(file));
 
                        // Could also use the last write time or similar for the file.
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);
                        
                        using (FileStream fs = File.OpenRead(file))
                        {
                            // Using a fixed size buffer here makes no noticeable difference for output
                            // but keeps a lid on memory usage.
                            int sourceBytes;
                            do
                            {
                                sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                s.Write(buffer, 0, sourceBytes);
                            } while (sourceBytes > 0);
                        }                  
                    }
                    s.Finish();
                    s.Close();
                    lblError.Text = "Zip creato";
                }
            }
            catch
           {
                lblError.Text = "Errore nella procedura ZIP";
           }
        }
    }
 

Primo controllo da effettuare: verificare l’esistenza della directory da zippare, dopo di che si procede.
Nota importante: il file di output sono riuscito ad aprirlo col gestore delle cartelle compresse di Windows, invece con WinRar riesco solo ad aprirlo e guardarci dentro ma non ad estrarre i files.

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)

Torna all'inizio