vbdotnet.it

Tricks & tips, workaround, forum and ideas with .Net

About the author

Enrico Rossini è il gestore di questo blog.
E-mail me Send mail

Recent posts

Recent comments

Contributi

Best 6 ~ 6 users ~ 6 comments

Info legali

Le opinioni espresse in questo blog sono strettamente personali e ogni persona è responsabile dei commenti che inserisce. I marchi citati sono delle rispettive aziende.

© Copyright 2010

Advertising


SilverLight: esempi on line

SilverLight ormai si sta facendo largo sui siti internet contrastando Flash. Come programmatori è necessario aggiornarsi a questa interessante tecnologia. Ho trovato questo link http://channel9.msdn.com/posts/Dan/Mike-Taulty-44-Silverlight-20-Screencasts/ che raccoglie 44 interessanti video sull'utilizzo e la programmazione di SilverLight.

  1. Silverlight - Anatomy of an Application
  2. Silverlight - The VS Environment
  3. Silverlight - Content Controls
  4. Silverlight - Built-In Controls
  5. Silverlight - Width, Height, Margins, Padding, Alignment
  6. Silverlight - Using a GridSplitter
  7. Silverlight - Grid Layout
  8. Silverlight - StackPanel Layout
  9. Silverlight - Canvas Layout
  10. Silverlight - Databinding UI to .NET Classes
  11. Silverlight - Simple Styles
  12. Silverlight - Custom Types in XAML
  13. Silverlight - Binding with Conversion
  14. Silverlight - List Based Data Binding
  15. Silverlight - Simple User Control
  16. Silverlight - Templating a Button
  17. Silverlight - Resources from XAP/DLL/Site Of Origin
  18. Silverlight - Animations & Storyboards
  19. Silverlight - Uploads with WebClient
  20. Silverlight - Downloads with WebClient
  21. Silverlight - Calling HTTPS Web Services
  22. Silverlight - Calling Web Services
  23. Silverlight - Making Cross Domain Requests
  24. Silverlight - Using HttpWebRequest
  25. Silverlight - File Dialogs and User Files
  26. Silverlight - Using Sockets
  27. Silverlight - Using Isolated Storage
  28. Silverlight - .NET Code Modifying HTML
  29. Silverlight - Using Isolated Storage Quotas
  30. Silverlight - Calling JavaScript from .NET
  31. Silverlight - Evaluating JavaScript from .NET Code
  32. Silverlight - Handling HTML Events in .NET Code
  33. Silverlight - Handling .NET Events in JavaScript
  34. Silverlight - Calling .NET from JavaScript
  35. Silverlight - Displaying a Custom Splash Screen
  36. Silverlight - Passing Parameters from your Web Page
  37. Silverlight - Loading Media at Runtime
  38. Silverlight - Dynamically Loading Assemblies/Code
  39. Silverlight - Reading/Writing XML
  40. Silverlight - Multiple Threads with BackgroundWorker
  41. Silverlight - Insert/Update/Delete with the DataGrid
  42. Silverlight - Getting Started with the DataGrid
  43. Silverlight - Embedding Custom Fonts

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categories: silverlight
Posted by enrico on Sunday, August 24, 2008 8:13 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Cancellare tutti i file presenti in una directory

Questa funzione consente di cancellare tutti i file presenti in una directory specificata: attenzione alla cartella che si specifica. Non vengono eliminate le sottodirectory.

   1:  Dim s As String
   2:  For Each s In System.IO.Directory.GetFiles("C:\WINDOWS\TEMP")
   3:     System.IO.File.Delete(s)
   4:  Next s

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Wednesday, August 20, 2008 9:36 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Aprire un file qualsiasi da codice

Ammettiamo che dal tuo programma vuoi aprire un file di cui conosci il percorso per farlo vedere all'utente. Da codice è necessario interrogare l'assembly System.Diagnostics.Process che avvia il processo indicato ovvero il percorso del file da aprire. Se l'estensione del file è associata ad un programma, in automatico si aprire il programma per visualizzare i file e quindi il file stesso. Nel caso in cui il file non esista o ci sia qualche problema viene generato in errore ed è per questo che è stato inserito il Try.

   1:  Try
   2:     Dim Proc As New System.Diagnostics.Process
   3:     Proc.StartInfo.FileName = _tmpPathFile
   4:     Proc.Start()
   5:  Catch ex As Exception
   6:     MessageBox.Show("Non è possibile aprire il file", "Apri", MessageBoxButtons.OK, MessageBoxIcon.Error)
   7:  End Try

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Wednesday, August 20, 2008 9:22 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Nome di un file senza path ed estensione

Questo è un semplicissimo post che consente di conoscere il nome di un file conoscendo l'interno percorso come ad esempio quando si utilizza OpenDialog

   1:  Public Function FileNameWithoutExtension(ByVal FullPath As String) As String
   2:    Return System.IO.Path.GetFileNameWithoutExtension(FullPath)
   3:  End Function

Ciao

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Wednesday, August 20, 2008 2:16 PM
Permalink | Comments (0) | Post RSSRSS comment feed

ListView e l'evento ItemCheck

Dire che ho perso mezza giornata per risolvere questo "semplice" problema a molti sembrerà impossibile eppure ho trovato molti sviluppatori che hanno riscontrato lo stesso problema. L'evento ItemCheck di un ListView viene generato quando un elemento che ha un checkbox viene selezionato o deselezionato.

Lo stesso evento si genera però quanto si aggiungono gli elementi al ListView magari per poterli visualizzare. Se ad esempio si vuole salvare il valore del checkbox su un database e recuperare i nuovi dati, si potrebbero generare dei loop.

Il problema si può risolvere in modo abbastanza semplice (dopo che l'ho scoperto): nel momento in cui si esegue il binding del listview è necessario rimuovere da codice l'evento ItemCheck e riassociarlo quando si è terminato il binding. Se ListView1 è il controllo presente sul form le righe di codice da scrivere sono le seguenti:

   1:  ' rimuove l'evento dalla gestione temporaneamente
   2:  RemoveHandler ListView1.ItemCheck, AddressOf ListView1_ItemCheck
   3:   
   4:  ' codice che popola il ListView
   5:   
   6:  ' riassocia l'evento itemcheck al controllo
   7:  AddHandler ListView1.ItemCheck, AddressOf ListView1_ItemCheck

Eh eh... semplice!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Wednesday, August 20, 2008 12:35 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Visualizzare report diversi con ReportViewer

Se si utilizza il controllo di Microsoft che si chiama ReportViewer che consente di creare e visualizzare dei report, il problema più ricorrente è la visualizzazione di report diversi all'interno dello stesso controllo.

L'errore che si incontra è possono venire visualizzare per report diversi sempre il primo report visualizzato o restituisce un errore di mancanza di indice. Come risolvere il problema?

Per prima cosa è necessario pulire il report utilizzando il seguente comando (ReportViewer1 è il controllo che consente di visualizzare i report, ProvaBingingSource è il bindingsource collegato al report):

   1:  ' pulisce il report
   2:  Me.ReportViewer1.Reset()

La seconda cosa da fare è riassociare la base dati al report:

   1:  ' associa la base dati
   2:  Dim rptSource1 As New Microsoft.Reporting.WinForms.ReportDataSource
   3:  rptSource1.Name = "{nome base dati}"
   4:  rptSource1.Value = Me.ProvaBindingSource
   5:  Me.ReportViewer1.LocalReport.DataSources.Add(rptSource1)

Infine è possibile impostare il report che si vuole utilizzare (nell'esempio si utilizza un report presente nell'assembly):

   1:  'imposta il report
   2:  Me.ReportViewer1.LocalReport.EnableExternalImages = True
   3:  Me.ReportViewer1.LocalReport.ReportEmbeddedResource = "Esia.Accounting.rptFatturato.rdlc"
   4:  Me.ReportViewer1.RefreshReport()

Facile no? :) Ah, non dimenticare di associare la base dati al report!

Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Sunday, August 17, 2008 1:34 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Preview con ReportViewer simile a quello di Word

ReportViewer è il nuovo sistema di reporting targato Microsoft all'interno di Visual Studio 2005 e Visual Studio 2008. Sto iniziando a conoscere questo strumento che sembra piuttosto interessante e che consente di eliminare CrystalReport che ho utilizzato per molti anni. Uno dei primi problemini era quello di visualizzare un'anteprima di stampa che fosse simile a quella di Microsoft Word. Con tre righine il desing è servito (ReportViewer1 è il controllo che consente di visualizzare i report creati con il tool)

   1:  ReportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout)
   2:  ReportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent
   3:  ReportViewer1.ZoomPercent = 100
 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Tuesday, August 12, 2008 9:02 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Validatore GUID

Lavorando spesso con gli Uniqueidentifier (noti anche come GUID) avevo la necessità di sapere in qualche modo se la stringa passata ad una funzione fosse effettivamente un GUID oppure qualcosa di diverso. Non trovando una funzione predefinita che lo facesse, me ne sono costruito una utilizzando le Regular Expression:

Public Function IsGUID(ByVal guid As String) As Boolean
    Dim rtn As Boolean = False
    If Not String.IsNullOrEmpty(guid) Then
        Dim guidRegEx As Regex = New Regex("^(\{{0,1}" & _
           "([0-9a-fA-F]){8}-([0-9a-fA-F])" & _
           "{4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-" & _
           "([0-9a-fA-F]){12}\}{0,1})$")
        rtn = guidRegEx.IsMatch(guid)
    Else
        rtn = False
    End If

    Return rtn
End Function

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,
Categories: RegEx | vb.net
Posted by davide on Thursday, August 07, 2008 10:35 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Validare un'email

Come validare un'email inserita da un utente all'interno di un campo? Ricorrendo alle regular expression è abbastanza semplice. La regex qui proposta consente non solo di validare le email "normali" ma anche quelle contenenti dopo la @ un IP (magari per effettuare dei test all'interno della propria rete).

^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))((([0-1]?[0-9]{1,2}|2{1}[0-5]{2})\.([0-1]?[0-9]{1,2}|2{1}[0-5]{2})\.([0-1]?[0-9]{1,2}|2{1}[0-5]{2})\.([0-1]?[0-9]{1,2}|2{1}[0-5]{2})){1}|([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categories: asp.net | RegEx | vb.net
Posted by enrico on Wednesday, August 06, 2008 12:13 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Funzione Max con condizione in Linq

Vi faccio un caso reale. Pensate di avere una tabella delle fatture con i campi Numero (per il progressivo della fattura) in formato int, Data di emissione in formate datetime e tipologia di documento in formato int (fattura, proforma, ddt, ecc). Ammettiamo che vi interessi conoscere il massimo valore presente nel campo Numero tenendo conto dell'anno (partendo dalla data corrente) e della tipologia di documento. Come fare senza incorrere in errori strani? Ecco la semplice soluzione (eDoc è il LinqToSQL, DataDocumento e TipoDocumento sono due variabili di servizio)

   1:  max = Aggregate p In eDoc.Fatture Where p.Data.Value.Year = Year(DataDocumento) And _
   2:        p.TipoDocumento.Value = TipoDocumento Into m = Max(p.Numero)

Interessante secondo me il modo in cui si confronta l'anno da database con l'anno da variabile: infatti se provi ad utilizzare Year(p.Data) comincia a dare errori impossibili del tipo "Non sono supportate conversioni a SQL per il metodo 'Int32 Year(System.DateTime)" che poi non riesci neanche a trovare qualcuno in internet che abbia avuto il tuo stesso problema!

Per evitare di avere errori nel caso in cui non ci siamo record che soddisfano la condizione, ti consiglio di mettere un bel Try...Catch!

Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Tuesday, August 05, 2008 9:44 PM
Permalink | Comments (0) | Post RSSRSS comment feed