<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Tips</title>
        <link>http://blogs.ugidotnet.org/franx_blog/category/Tips.aspx</link>
        <description>Tips</description>
        <language>it-IT</language>
        <copyright>Francesco Geri</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Problema con l&amp;rsquo;icona della Form MDI child quando &amp;egrave; aperta maximized</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2013/07/26/101626.aspx</link>
            <description>Se si apre un form MDI child come maximized si ha un problema nella visualizzazione della sua icona.   Basta creare un progetto con una Form MDI container (IsMdiContainer=True), mettere un Menustrip ed inserire il seguente codice per l’apertura della form figlia Form2:          Private Sub NewToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NewToolStripMenuItem.Click


        Dim f As New Form2


        f.MdiParent = Me


        f.WindowState = FormWindowState.Maximized


        f.Show()


    End Sub





Il risultato sarà:





Anche se in realtà la form Form2 ha una sua icona, per cui il risultato doveva essere:



 

Per risolvere il problema ho trovato 2 modi (grazie alla stessa fonte):

Primo metodo
    Giocare con il SuspendLayout del menustrip:


  
    Private Sub NewToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NewToolStripMenuItem.Click


        Me.MenuStrip1.SuspendLayout()


     


        Dim f As New Form2


        f.MdiParent = Me


        f.WindowState = FormWindowState.Maximized


        f.Show()


     


        Me.MenuStrip1.Visible = False


        Me.MenuStrip1.Visible = True


        Me.MenuStrip1.ResumeLayout()


    End Sub



 

Secondo metodo
    Inserire nella Load della form figlia la seguente riga di codice:


  
    Me.Icon = New Icon(Me.Icon, Me.Icon.Size)





Per cui, nel mio esempio, avrei:


  
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load


        Me.Label1.Text = "Sono la form 2 creata alle " &amp;amp; Now.ToString


        ' Fix del problema icona form figlia


        Me.Icon = New Icon(Me.Icon, Me.Icon.Size)


    End Sub

&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/101626.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2013/07/26/101626.aspx</guid>
            <pubDate>Fri, 26 Jul 2013 14:04:10 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2013/07/26/101626.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/101626.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Visual Inheritance nei controlli Windows Form</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/08/101464.aspx</link>
            <description>Dovendo fare in una stessa applicazione molte form di dialogo per l’immissione o visualizzazione di informazioni ho pensato di creare una form base (scheletro) che fosse impostata con le caratteristiche comuni (font, colore di sfodo) e con i pulsanti ok, applica, annulla. A questo punto tutte le form di dialogo ereditano da questa (invece che da System.Windows.Form.Form) e così si trovano automaticamente i pulsanti e tutto il resto.  Per posizionare i pulsanti ho pensato di usare un TableLayoutPanel in modo che ridimensionando le form ereditate i pulsanti si spostino nel punto giusto.  Però mi sono accorto che, in Visual Studio, dal Form editor il controllo TableLayoutPanel ed i suoi children risultano in sola lettura. Sostituendo il TableLayoutPanel con un Panel posso invece editare i controlli in esso contenuti.  Il problema è che, per poter essere editati nel Form editor, i controlli ereditati devono supportare la Visual Inheritance, ed il TableLayoutPanel non la supporta.   La cosa è documentata in questa pagina: Best Practices for the TableLayoutPanel Control.  Ci sono altri controlli che hanno lo stesso problema, come indicato nell’articolo Walkthrough: Demonstrating Visual Inheritance. In particolare sono:    WebBrowser    ToolStrip    ToolStripPanel    TableLayoutPanel    FlowLayoutPanel    DataGridView&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/101464.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/08/101464.aspx</guid>
            <pubDate>Fri, 08 Mar 2013 10:29:33 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/08/101464.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/101464.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Eliminazione dello sfarfallio (flickering) delle Finestre figlie di una MDI all&amp;rsquo;activate</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/01/101460.aspx</link>
            <description>Quando una Form MDI contiene delle form figlie aperte in modalità Maximized si uno sfarfallio al cambio delle finestra attiva.  Ciò succede quando si attiva la finestra da codice. Per evitare questo fastidioso comportamento si può come al solito ricorrere alle API Windows.  A tal proposito ho preparato un modulo MDIUtil che crea un Extension method per aggiungere alla form MDIParent il metodo MyActivateMdiChild con cui si può richiedere di attivare una form child evitando il flickering.   Il codice del modulo è il seguente:          Imports System.Collections.Generic


    Imports System.Linq


    Imports System.Text


    Imports System.Windows.Forms


    Imports System.Runtime.InteropServices


     


    Public Module MDIUtil


     


    #Region " MDI Activate Child "


     


        &amp;lt;System.Security.SuppressUnmanagedCodeSecurity&amp;gt;


        &amp;lt;System.Runtime.InteropServices.DllImport("user32.dll", CharSet:=System.Runtime.InteropServices.CharSet.Auto)&amp;gt;


        Public Function SendMessage(hWnd As IntPtr, msg As Integer, wParam As IntPtr, lParam As IntPtr) As IntPtr


        End Function


     


        Public Const WM_MDINEXT As Integer = &amp;amp;H224


     


        ''' &amp;lt;summary&amp;gt;


        ''' Attiva la form MDI child specificata eviatando i problemi di flicker/flashing


        ''' che si avrebbero usando semplicemente il metodo &amp;lt;see cref="Form.Activate"&amp;gt;Activate&amp;lt;/see&amp;gt;.


        ''' Vedi post http://www.codeproject.com/Articles/19524/Workaround-for-flicker-flashing-when-programmatica


        ''' &amp;lt;/summary&amp;gt;


        ''' &amp;lt;param name="form"&amp;gt;Form MDI partent&amp;lt;/param&amp;gt;


        ''' &amp;lt;param name="childToActivate"&amp;gt;Form MDI child da attivre&amp;lt;/param&amp;gt;


        &amp;lt;System.Runtime.CompilerServices.Extension&amp;gt;


     Public Sub MyActivateMdiChild(form As Form, childToActivate As Form)


            If Not childToActivate Is form.ActiveMdiChild Then


                Dim mdiClient As MdiClient = GetMDIClient(form)


                If mdiClient Is Nothing Then Return


                Dim count As Integer = form.MdiChildren.Length


                Dim childForm As Control = Nothing


                ' next or previous MDIChild form


                Dim pos As Integer = mdiClient.Controls.IndexOf(childToActivate)


                If pos &amp;lt; 0 Then Return 'Throw New InvalidOperationException("MDIChild form not found")


                If mdiClient.Controls.Count &amp;lt;= 1 Then


                    ' C'è un solo child, quindi attiva quello in modo classico


                    childToActivate.Focus()


                    Return


                End If


                If pos = 0 Then


                    childForm = mdiClient.Controls(1)


                Else


                    ' get next and activate previous


                    childForm = mdiClient.Controls(pos - 1)


                End If


                ' get previous and activate next


     


                ' flag indicating whether to activate previous or next MDIChild


                Dim direction As New IntPtr(If(pos = 0, 1, 0))


     


                ' bada bing, bada boom


                SendMessage(mdiClient.Handle, WM_MDINEXT, childForm.Handle, direction)


            End If


        End Sub


     


        Public Function GetMDIClient(form As Form) As MdiClient


            For Each c As Control In form.Controls


                If TypeOf c Is MdiClient Then


                    Return DirectCast(c, MdiClient)


                End If


            Next


            Return Nothing 'Throw New InvalidOperationException("No MDIClient")


        End Function


     


    #End Region


     


    End Module



 

A questo punto nella form parent MDI si deve importare il modulo e usare il metodo MyActivateMdiChild al posto di child.Activate() (o Focus()):


  
    Imports itConsult.josh.joshDesigner.MDIUtil


     


     


    ...


     


    Dim child As Form = getTheFormToActivate()


    ' La seguente istruzione sostisuice l'istruzione: child.Activate()


    Me.MyActivateMdiChild(child)



 

Nei commenti del codice del modulo è indicata anche la fonte da cui ho liberamente preso quel codice, ovvero questo post.&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/101460.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/01/101460.aspx</guid>
            <pubDate>Fri, 01 Mar 2013 18:13:59 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/01/101460.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/101460.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Rimuovere il bordo interno delle form MDI (sunken)</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/01/101458.aspx</link>
            <description>Una Form MDI di default ha un bordo interno (che credo sia di tipo sunken), ovvero del tipo:    Per rimuoverlo si può ricorrere alle API windows.   A tal proposito ho preparato un modulo MDIUtil che crea un Extension method per aggiungere alla form MDIParent il metodo SetBevel con cui si può richiedere di mostrare o non mostrare il bordo.  Il codice del modulo è il seguente:          Imports System.Collections.Generic


    Imports System.Linq


    Imports System.Text


    Imports System.Windows.Forms


    Imports System.Runtime.InteropServices


     


    Public Module MDIUtil


     


    #Region " Bordo interno (sunken) "


     


        &amp;lt;DllImport("user32.dll")&amp;gt; _


        Private Function GetWindowLong(hWnd As IntPtr, nIndex As Integer) As Integer


        End Function


     


        &amp;lt;DllImport("user32.dll")&amp;gt; _


        Private Function SetWindowLong(hWnd As IntPtr, nIndex As Integer, dwNewLong As Integer) As Integer


        End Function


     


        &amp;lt;DllImport("user32.dll", ExactSpelling:=True)&amp;gt; _


        Private Function SetWindowPos(hWnd As IntPtr, hWndInsertAfter As IntPtr, X As Integer, Y As Integer, cx As Integer, cy As Integer, _


            uFlags As UInteger) As Integer


        End Function


     


        Private Const GWL_EXSTYLE As Integer = -20


        Private Const WS_EX_CLIENTEDGE As Integer = &amp;amp;H200


        Private Const SWP_NOSIZE As UInteger = &amp;amp;H1


        Private Const SWP_NOMOVE As UInteger = &amp;amp;H2


        Private Const SWP_NOZORDER As UInteger = &amp;amp;H4


        Private Const SWP_NOREDRAW As UInteger = &amp;amp;H8


        Private Const SWP_NOACTIVATE As UInteger = &amp;amp;H10


        Private Const SWP_FRAMECHANGED As UInteger = &amp;amp;H20


        Private Const SWP_SHOWWINDOW As UInteger = &amp;amp;H40


        Private Const SWP_HIDEWINDOW As UInteger = &amp;amp;H80


        Private Const SWP_NOCOPYBITS As UInteger = &amp;amp;H100


        Private Const SWP_NOOWNERZORDER As UInteger = &amp;amp;H200


        Private Const SWP_NOSENDCHANGING As UInteger = &amp;amp;H400


     


        ''' &amp;lt;summary&amp;gt;


        ''' Consente di rimuovere il bordo 3D interno della form MDI (sunken).


        ''' Vedi post: http://stackoverflow.com/questions/7752696/how-to-remove-3d-border-sunken-from-mdiclient-component-in-mdi-parent-form


        ''' Oppure articolo: http://www.codeproject.com/Articles/8489/Getting-a-quot-Handle-quot-on-the-MDI-Client#Changing%20the%20Border%20Styles:


        ''' &amp;lt;/summary&amp;gt;


        ''' &amp;lt;param name="form"&amp;gt;&amp;lt;/param&amp;gt;


        ''' &amp;lt;param name="show"&amp;gt;False per rimuovere il sunken (3D interno), True per mostrarlo&amp;lt;/param&amp;gt;


        ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;


        &amp;lt;System.Runtime.CompilerServices.Extension&amp;gt;


     Public Function SetBevel(form As Form, show As Boolean) As Boolean


            For Each c As Control In form.Controls


                Dim client As MdiClient = TryCast(c, MdiClient)


                If client IsNot Nothing Then


                    Dim windowLong As Integer = GetWindowLong(c.Handle, GWL_EXSTYLE)


     


                    If show Then


                        windowLong = windowLong Or WS_EX_CLIENTEDGE


                    Else


                        windowLong = windowLong And Not WS_EX_CLIENTEDGE


                    End If


     


                    SetWindowLong(c.Handle, GWL_EXSTYLE, windowLong)


     


                    ' Update the non-client area.


                    SetWindowPos(client.Handle, IntPtr.Zero, 0, 0, 0, 0, _


                        SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOOWNERZORDER Or SWP_FRAMECHANGED)


     


                    Return True


                End If


            Next


            Return False


        End Function


     


    #End Region


     


    End Module



 

A questo punto nella form parent MDI si deve importare il modulo e usare il metodo SetBevel nella load, ovvero:


  
    Imports itConsult.josh.joshDesigner.MDIUtil


     


    Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Me.SetBevel(False)


    End Sub



 

Nei commenti del codice del modulo sono indicate anche le fonti da cui ho liberamente preso quel codice, ovvero questo post e questo post.&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/101458.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/01/101458.aspx</guid>
            <pubDate>Fri, 01 Mar 2013 11:05:46 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2013/03/01/101458.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/101458.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Inserimento di una data precedente al 1/1/1970 in SharePoint</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/19/98593.aspx</link>
            <description>Se elaborando documenti e proprietà su SharePoint (2007) vi capitasse un errore come questo:  Microsoft.SharePoint.SPInvalidPropertyException: Date Times before 1/1/1970 are not supported. Allora il problema potrebbe essere quello capitato anche a me oggi.  Il mio codice eseguiva l’upload di un documento su SharePoint e contestuale valorizzazione delle sue proprietà, il tutto tramite il metodo Add dell’oggetto SPFolder.   Se fra le proprietà c’è una data allora come valore è bene passare quello ottenuto dalla funzione SPUtility.CreateISO8601DateTimeFromSystemDateTime, ovvero una stringa con la rappresentazione UTC della data (formato ISO8601, ovvero yyyy-mm-ddThh:mm:ssZ).   Il codice corretto è il seguente.          ' Crea una Hashtable delle proprietà


    Dim myProps As New Hashtable()


    Dim propName As String = "MyDatePropName"


    ' Imposta come valore una stringa con il formato UTC, ottenuta come segue: 


    Dim propValue As Object = SPUtility.CreateISO8601DateTimeFromSystemDateTime(New DateTime(1950, 1, 1))


    ' ... invece di: Dim propValue As Object = New DateTime(1950, 1, 1)


     


    myProps.Add(propName, propValue)


     


    ' Recupera l'oggetto SPFolder dall'oggetto SPWeb corrente


    Dim oFolder as SPFolder = myWeb.GetFolder(myFolderURL)


    ' Aggiunge il file con le proprietà


    Dim objDestFile as SPFile = objDestFolder.Files.Add(myFolderURL &amp;amp; "/" &amp;amp; myFileName, myDocumentSourceStream, myProps)



 

Due osservazioni:


  Passando la data nuda e cruda (il datetime) si ha un errore per date inferiori all’1/1/1970, mentre per date successive funziona.

  Passando una stringa che non sia una data non succede nulla… nel senso che non c’è eccezione, il documento viene caricato e la proprietà resta vuota


 

Note: Grazie a Gabriele per i suggerimenti!&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98593.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/19/98593.aspx</guid>
            <pubDate>Wed, 19 May 2010 12:15:50 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/19/98593.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98593.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Problemi con il Microsoft Visual Studio Version Selector su Vista/Win7</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/14/98564.aspx</link>
            <description>Può capitare con Vista o Windows 7 che facendo doppio click da Esplora Risorse su un file di progetto o di solution di Visual Studio non succeda nulla. Ovvero non parta Visual Studio.  Se capita, allora il motivo potrebbe essere la concomitanza di questi 2 fattori:  1) La UAC è attiva   2) Visual Studio è impostato per partire sempre As Administrator  Se è così allora si può fare una delle 2 cose seguenti:  - Togliere il flag “As Administrator” a Visual Studio, oppure   - Metterlo a “Microsoft Visual Studio Version Selector”  L’eseguibile “Microsoft Visual Studio Version Selector” è l’utility di Visual Studio associata all’estensione dei file di progetto e di solution ed ha il compito di capire di che versione di visual studio è il file e di avviare quella versione passandogli il file.    Per cui il selector parte, vede che il file sln è di VS2008, ad esempio, cerca quindi di avviare VS2008. Se questo però ha il flag As Administrator allora l’avvio non riesce.    Per impostare lo stesso flag sul selector bisogna individuarlo: si trova nella cartella (Drive C o quello che è):  [C]:\Program Files (x86)\Common Files\microsoft shared\MSEnv  L’eseguibile si chiama VSLauncher.exe, fare click con il tasto destro e aprire le Proprietà. Nel pannello Compatibility impostare il flag Run this program as an administrator:     &lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98564.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/14/98564.aspx</guid>
            <pubDate>Fri, 14 May 2010 12:44:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/14/98564.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98564.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Menu Edit WCF Configuration scomparso da Visual Studio 2008</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/14/98561.aspx</link>
            <description>Mi è capitato esattamente quanto descritto in questo post, ovvero ho aggiunto una service reference ad un progetto (Console), ho fatto tasto destro sul file app.config per richiamare l’editor della configurazione WCF, ma il menu contestuale “Edit WCF Configuration” non era disponibile:
 
 
Allora seguendo le indicazioni del post di cui sopra ho fatto click sul menu Tools|WCF Service Configuration Editor, in questo modo ho aperto l’editor, da qui ho aperto il file app.config (File|Open), l’ho chiuso ed il menu è finalmente comparso:
 
&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98561.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/14/98561.aspx</guid>
            <pubDate>Fri, 14 May 2010 10:49:25 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2010/05/14/98561.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98561.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Format di un DateTime</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2010/04/22/98422.aspx</link>
            <description>Quando si “stampa” una data bisogna fare attenzione al formato che si utilizza.    Ad esempio io faccio ampio uso del formato italiano tramite il seguente codice:          Dim dateAsString As String = Now.ToString("dd/MM/yyyy")



Purtroppo quel codice non fa esattamente quello che mi aspetto. 
  Infatti il carattere / ha un significato, ovvero è il separatore di sistema usato per le date. Ovvero, se nei miei settings regionali di sistema la data è scritta ad esempio così yyyy-MM-dd, allora quel ToString di cui sopra produce dd-MM-yyyy, ovvero mette il giorno, poi il mese, poi l’anno come ho specificato, ma li separa con il separatore di sistema, e non con il caratettere /.

Sono certo che tutti lo sapevano benissimo e che io sono uno dei pochi ingenui che invece non lo sapeva, ma per quegli altri pochi come me lo voglio segnalare, in modo da evitare questo errore in futuro.

Il codice corretto è il seguente:


  
    Dim dateAsString As String = Now.ToString("dd\/MM\/yyyy")





In pratica si deve usare il carattere di escape per far mantenere il nostro /.

Lo stesso discorso vale per il ToString di un Time, in cui il carattere : viene sostituito con quello di sistema, e quindi si deve scrivere:


  
    Dim timeAsString As String = Now.ToString("hh\:mm\:ss")





In generale le stringhe andrebbero messe fra apice o doppio apice, ad esempio:


  
    Dim dateAsString As String = Now.ToString("dd""/""MM""/""yyyy")



Trovate tutti i dettagli a questo link.

 

PS: 
  La proprietà CustomFormat del DateTimePicker non segue questa politica, ma funziona con un meccanismo a metà, ovvero la data la posso scrivere così “dd/MM/yyyy - HH:mm” o anche così “dd/MM/yyyy’ - ‘HH:mm”, ma non così “dd\/MM\/yyyy”… insomma \ e : non sono caratteri speciali, l’escape (\) non esiste, le stringhe possono o meno andare fra apice (‘).

  Non voglio indagare oltre… :(&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98422.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2010/04/22/98422.aspx</guid>
            <pubDate>Thu, 22 Apr 2010 11:32:40 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2010/04/22/98422.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98422.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Avviare un eseguibile a 32bit in una macchina a 64bit</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2010/04/08/98332.aspx</link>
            <description>Se abbiamo compilato un eseguibile in modalità Any CPU e lo lanciamo su una macchina a 64bit questo verrà ovviamente eseguito a 64bit.  Se però ci servisse poterlo avviare a 32bit possiamo sfruttare il tool CorFlags.exe.     Basta avviare il prompt dei comandi di Visual Studio e poi digitare:        corflags.exe /32bit+ filename.exe    Per ripristinare il comportamento normale:       corflags.exe /32bit- filename.exe     [Fonte]&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98332.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2010/04/08/98332.aspx</guid>
            <pubDate>Thu, 08 Apr 2010 16:40:07 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2010/04/08/98332.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98332.aspx</wfw:commentRss>
        </item>
        <item>
            <title>x64 o x86?</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2010/03/23/98251.aspx</link>
            <description>Piccola e semplice funzione in VB.NET per determinare se la macchina in cui l’applicazione in esecuzione è x86 o x64.             1: Function IsSys64Bit() As Boolean


       2:     Dim identifier As String = Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER")


       3:     If identifier.IndexOf("i86", StringComparison.InvariantCultureIgnoreCase) Then


       4:         Return False


       5:     Else


       6:         Return True


       7:     End If


       8: End Function





[liberamente tratto da http://support.microsoft.com/kb/556009]

 

Variante sul tema: per determinare se l’applicazione corrente è eseguita in modalità 32 bit o 64 bit:


  
       1: Function IsApp64Bit() As Boolean


       2:     Dim bits As Integer = IntPtr.Size * 8


       3:     Return (bits = 64)


       4: End Function

&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98251.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2010/03/23/98251.aspx</guid>
            <pubDate>Tue, 23 Mar 2010 11:19:07 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2010/03/23/98251.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98251.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>