<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>.Net</title>
        <link>http://blogs.ugidotnet.org/franx_blog/category/2600.aspx</link>
        <description>.Net Framework</description>
        <language>it-IT</language>
        <copyright>Francesco Geri</copyright>
        <managingEditor>fgeri@itconsult.it</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Nel meraviglioso mondo di SharePoint!</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/07/02/93271.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Problema&lt;/font&gt;&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;Se da codice imposto una proprietà di tipo data+ora di un documento contenuto in una Document Library di SharePoint mi ritrovo un valore diverso da quallo impostato. In particolare ho uno sfasamento di un'ora o due.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008080"&gt;Soluzione&lt;/font&gt;&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;Certo, direte voi, devi usare le date in &lt;a href="http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm" target="_blank"&gt;formato UTC&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Allora vediamo coda succede in 2 casi, cioè se il file esiste e modifico la sua proprietà, oppure se il file è creato nuovo e la proprietà assegnata all'upload.&lt;/p&gt;  &lt;p&gt;L'esempio suppone che:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ci sia un documento all'url &lt;em&gt;&lt;font color="#0080ff"&gt;http://myServer/mySite/myDocLib&lt;/font&gt;&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;la document library che contiene quel documento abbia una proprietà di nome &lt;em&gt;&lt;font color="#0080ff"&gt;myDateTimeProp&lt;/font&gt;&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Il codice di esempio (inserito in un qualche button click) esegue l'update della proprietà del documento esistente, poi crea un nuovo documento (con il contenuto del precedente) assegnandogli un certo valore della proprietà di tipo Data.&lt;/p&gt;  &lt;p&gt;Si noti che nel primo caso (update) si deve usare la data nel suo formato normale, nel secondo la si deve convertire in formato UTC.&lt;/p&gt;  &lt;p&gt;Ogni altra combinazione non sembra funzionare.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red0\green128\blue0;\red163\green21\blue21;}??\fs22 \cf1 Private\cf0  \cf1 Sub\cf0  Button2_Click(\cf1 ByVal\cf0  sender \cf1 As\cf0  System.Object, \cf1 ByVal\cf0  e \cf1 As\cf0  System.EventArgs) \cf1 Handles\cf0  Button2.Click\par ??\tab \tab \cf4 ' Esegue l'update della data:\par ??\cf0 \tab \tab \cf1 Dim\cf0  urlDoc \cf1 As\cf0  \cf1 String\cf0  = \cf5 "http://win2k3-moss07-f/josh/TestProps/AD00000049.tif"\par ??\cf0 \tab \tab \cf1 Dim\cf0  objSite \cf1 As\cf0  SPSite = \cf1 Nothing\par ??\cf0 \tab \tab \cf1 Dim\cf0  objWeb \cf1 As\cf0  SPWeb = \cf1 Nothing\par ??\cf0 \tab \tab \cf1 Try\par ??\cf0 \tab \tab \tab \cf1 Me\cf0 .Cursor = Cursors.WaitCursor\par ??\tab \tab \tab \cf4 ' Crea gli oggetti SPSite ed SPWeb \par ??\cf0 \tab \tab \tab objSite = \cf1 New\cf0  SPSite(urlDoc)\par ??\tab \tab \tab objWeb = objSite.OpenWeb\par ??\tab \tab \tab \cf4 '' Cerca la document library\par ??\cf0 \tab \tab \tab \cf1 Dim\cf0  objItem \cf1 As\cf0  SPListItem = objWeb.GetListItem(urlDoc)\par ??\tab \tab \tab objItem.Item(\cf5 "DataeOra"\cf0 ) = Now.ToUniversalTime\par ??\tab \tab \tab objItem.Update()\par ??\tab \tab \tab \cf1 Dim\cf0  s \cf1 As\cf0  IO.Stream = objItem.File.OpenBinaryStream()\par ??\tab \tab \tab \cf1 Dim\cf0  props \cf1 As\cf0  \cf1 New\cf0  Hashtable\par ??\tab \tab \tab props.Add(\cf5 "DataeOra"\cf0 , Now)\par ??\tab \tab \tab objItem.File.ParentFolder.Files.Add(\cf5 "test.tif"\cf0 , s, props)\par ??\tab \tab \cf1 Catch\cf0  ex \cf1 As\cf0  Exception\par ??\tab \tab \tab MessageBox.Show(ex.ToString)\par ??\tab \tab \cf1 Finally\par ??\cf0 \tab \tab \tab \cf1 If\cf0  \cf1 Not\cf0  objSite \cf1 Is\cf0  \cf1 Nothing\cf0  \cf1 Then\cf0  objSite.Dispose()\par ??\tab \tab \tab \cf1 If\cf0  \cf1 Not\cf0  objWeb \cf1 Is\cf0  \cf1 Nothing\cf0  \cf1 Then\cf0  objWeb.Dispose()\par ??\tab \tab \tab \cf1 Me\cf0 .Cursor = Cursors.Default\par ??\tab \tab \cf1 End\cf0  \cf1 Try\par ??\cf0 \tab \cf1 End\cf0  \cf1 Sub}
--&gt;  &lt;div style="font-size: 11pt; background: white; color: black; font-family: consolas"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    1&lt;/span&gt; &lt;span style="color: blue"&gt;Private&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color: blue"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: blue"&gt;As&lt;/span&gt; System.Object, &lt;span style="color: blue"&gt;ByVal&lt;/span&gt; e &lt;span style="color: blue"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color: blue"&gt;Handles&lt;/span&gt; Button1.Click&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    2&lt;/span&gt;     &lt;span style="color: green"&gt;' Esegue l'update della data:&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    3&lt;/span&gt;     &lt;span style="color: blue"&gt;Dim&lt;/span&gt; urlDoc &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;String&lt;/span&gt; = &lt;span style="color: #a31515"&gt;"http://myServer/mySite/myDocLib/myDoc1.tif"&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    4&lt;/span&gt;     &lt;span style="color: blue"&gt;Dim&lt;/span&gt; objSite &lt;span style="color: blue"&gt;As&lt;/span&gt; SPSite = &lt;span style="color: blue"&gt;Nothing&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    5&lt;/span&gt;     &lt;span style="color: blue"&gt;Dim&lt;/span&gt; objWeb &lt;span style="color: blue"&gt;As&lt;/span&gt; SPWeb = &lt;span style="color: blue"&gt;Nothing&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    6&lt;/span&gt;     &lt;span style="color: blue"&gt;Try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    7&lt;/span&gt;       &lt;span style="color: blue"&gt;Me&lt;/span&gt;.Cursor = Cursors.WaitCursor&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    8&lt;/span&gt;       &lt;span style="color: green"&gt;' Crea gli oggetti SPSite ed SPWeb &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;    9&lt;/span&gt;       objSite = &lt;span style="color: blue"&gt;New&lt;/span&gt; SPSite(urlDoc)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   10&lt;/span&gt;       objWeb = objSite.OpenWeb&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   11&lt;/span&gt;       &lt;span style="color: green"&gt;'' Cerca la document library&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   12&lt;/span&gt;       &lt;span style="color: blue"&gt;Dim&lt;/span&gt; objItem &lt;span style="color: blue"&gt;As&lt;/span&gt; SPListItem = objWeb.GetListItem(urlDoc)&lt;/p&gt;    &lt;p style="margin: 0px; background-color: #ffff33"&gt;&lt;span style="color: #2b91af"&gt;   13&lt;/span&gt;       objItem.Item(&lt;span style="color: #a31515"&gt;"myDateTimeProp"&lt;/span&gt;) = Now&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   14&lt;/span&gt;       objItem.Update()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   15&lt;/span&gt;       &lt;span style="color: blue"&gt;Dim&lt;/span&gt; stream &lt;span style="color: blue"&gt;As&lt;/span&gt; IO.Stream = objItem.File.OpenBinaryStream()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   16&lt;/span&gt;       &lt;span style="color: blue"&gt;Dim&lt;/span&gt; props &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;New&lt;/span&gt; Hashtable&lt;/p&gt;    &lt;p style="margin: 0px; background-color: #ffff33"&gt;&lt;span style="color: #2b91af"&gt;   17&lt;/span&gt;       props.Add(&lt;span style="color: #a31515"&gt;"myDateTimeProp"&lt;/span&gt;, Now.ToUniversalTime)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   18&lt;/span&gt;       objItem.File.ParentFolder.Files.Add(&lt;span style="color: #a31515"&gt;"myDoc2.tif"&lt;/span&gt;, stream, props)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   19&lt;/span&gt;       stream.Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   20&lt;/span&gt;     &lt;span style="color: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="color: blue"&gt;As&lt;/span&gt; Exception&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   21&lt;/span&gt;       MessageBox.Show(ex.ToString)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   22&lt;/span&gt;     &lt;span style="color: blue"&gt;Finally&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   23&lt;/span&gt;       &lt;span style="color: blue"&gt;If&lt;/span&gt; &lt;span style="color: blue"&gt;Not&lt;/span&gt; objSite &lt;span style="color: blue"&gt;Is&lt;/span&gt; &lt;span style="color: blue"&gt;Nothing&lt;/span&gt; &lt;span style="color: blue"&gt;Then&lt;/span&gt; objSite.Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   24&lt;/span&gt;       &lt;span style="color: blue"&gt;If&lt;/span&gt; &lt;span style="color: blue"&gt;Not&lt;/span&gt; objWeb &lt;span style="color: blue"&gt;Is&lt;/span&gt; &lt;span style="color: blue"&gt;Nothing&lt;/span&gt; &lt;span style="color: blue"&gt;Then&lt;/span&gt; objWeb.Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   25&lt;/span&gt;       &lt;span style="color: blue"&gt;Me&lt;/span&gt;.Cursor = Cursors.Default&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   26&lt;/span&gt;     &lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;   27&lt;/span&gt;   &lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#008000"&gt;Considerazioni finali&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;Si tratta di una mia personalissima ipotesi, ma secondo me i team di sviluppo della funzionalità di update e di quella di addnew sono distinti, separati e non comunicanti.&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/93271.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/07/02/93271.aspx</guid>
            <pubDate>Thu, 03 Jul 2008 10:59:30 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/93271.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/07/02/93271.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/93271.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/93271.aspx</trackback:ping>
        </item>
        <item>
            <title>Testo che scompare dalle textbox multilinea in Windows Vista</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/07/01/93251.aspx</link>
            <description>&lt;p&gt;Ho riscontrato in una mia applicazione uno strano comportamento. &lt;/p&gt;  &lt;p&gt;Il testo di una textbox multilinea scompariva e riappariva passandogli sopra con il mouse. Oltre ad essere multilinea aveva anche una scrollbar verticale ed era inserita in un controllo SplitContainer che a sua volta era all'interno di una TabPage. Il comportamento si verificava solo con Windows Vista.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Per riprodurre il problema è sufficiente creare una applicazione Windows Forms, mettere un TabControl, dentro ad un suo TabPage mettere uno SplitContainer, dentro ad un pannello dello SplitContainer mettere un Textbox multilinea con Scrollbar verticale. Natuaralmente bisogna essere su un sistema con &lt;a href="http://blogs.ugidotnet.org/franx_blog/archive/2008/03/30/91960.aspx" target="_blank"&gt;Windows Vista&lt;/a&gt; (su XP tutto OK...)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/franx_blog/WindowsLiveWriter/Testochescomparedalletextboxmultilineain_7F7E/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="289" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/franx_blog/WindowsLiveWriter/Testochescomparedalletextboxmultilineain_7F7E/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;A questo punto basta mandare in esecuzione, scrivere del testo nella textbox muovere un po' il mouse ed osservare il comportamento.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Per risolvere il problema mi viene in auto questo &lt;a href="http://www.eggheadcafe.com/software/aspnet/30192366/disappearing-text-in-wind.aspx" target="_blank"&gt;post&lt;/a&gt;, in cui si suggeriscono due vie:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Impostare a &lt;span style="color: blue"&gt;False&lt;/span&gt; la proprietà UseVisualStyleBackColor del TabPage       &lt;br /&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;Me&lt;/span&gt;.TabPage1.UseVisualStyleBackColor = &lt;span style="color: blue"&gt;False          &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Sostituire la textbox con una RichTextBox      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Impostare la proprietà Backcolor del TabPage ad un valore diverso da Trasparent (nuova soluzione indicatami da &lt;a href="http://blogs.devleap.com/riccardogualandri/default.aspx" target="_blank"&gt;Riccardo&lt;/a&gt;)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Da notare che per la prima soluzione occorre impostare la proprietà da codice, per esempio nella load della pagina, in quanto se la si imposta dalla finestra delle proprietà del TabPage la modifica non viene recepita da Visual Studio (succederà solo a me?).&lt;/p&gt;  &lt;p&gt;Inoltre la prima soluzione funziona per l'esempio che ho proposto sopra, ma evidentemente non funziona sempre. Tant'è che per la mia applicazione originale non ha funzionato! Per cui ho adottato la seconda.&lt;/p&gt;  &lt;p&gt;Tutte le soluzioni hanno delle conseguenze grafiche, nel senso che modificano l'aspetto originale della form (nel primo caso lo sfondo del TabPage diventa grigetto, nel secondo il bordo della RichTextBox ha una profondità più marcata rispetto a quello del textbox, nel terzo si deve impostare un colore di sfondo) per cui nessuna delle tre è "perfetta". Tuttavia meglio di niente...&lt;/p&gt;  &lt;p style="font-size: 11pt; background: white; color: black; font-family: consolas; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/93251.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/07/01/93251.aspx</guid>
            <pubDate>Wed, 02 Jul 2008 07:08:39 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/93251.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/07/01/93251.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/93251.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/93251.aspx</trackback:ping>
        </item>
        <item>
            <title>Open XML Format SDK</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/04/17/92265.aspx</link>
            <description>&lt;p&gt;Pubblicato l'Open XML Format SDK (April CTP):&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;amp;displaylang=en" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Mentre la versione online dell'SDK è all'indirizzo:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/bb448854.aspx" href="http://msdn2.microsoft.com/en-us/library/bb448854.aspx" target="_blank"&gt;http://msdn2.microsoft.com/en-us/library/bb448854.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Fonte: &lt;a title="Erika Ehrli" href="http://blogs.msdn.com/erikaehrli/archive/2008/04/17/announcing-the-open-xml-format-sdk-april-ctp.aspx" target="_blank"&gt;Erika Ehrli&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/92265.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/04/17/92265.aspx</guid>
            <pubDate>Fri, 18 Apr 2008 06:45:52 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/92265.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/04/17/92265.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/92265.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/92265.aspx</trackback:ping>
        </item>
        <item>
            <title>Trasformazione di un file XML in un file HTML tramite un XSLT</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/04/02/92024.aspx</link>
            <description>&lt;p&gt;La trasformazione via codice di un file XML in HTML tramite file XSLT è molto semplice (cito liberamente da &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx"&gt;MSDN&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre&gt;' Load the style sheet.&lt;br /&gt;Dim xslt As New XslCompiledTransform()&lt;br /&gt;xslt.Load("output.xsl")&lt;br /&gt;        &lt;br /&gt;' Execute the transform and output the results to a file.&lt;br /&gt;xslt.Transform("books.xml", "books.html")&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Il codice riportato lavora su file fisici, messi da qualche parte. &lt;br /&gt;
Se però non si vuole sfruttare il file system, si può usare una funzione come la seguente, che consente di fare la trasformazione senza aver file fisici in gioco.&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;div style="background: white none repeat scroll 0% 50%; font-size: 11pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: consolas;"&gt;
&lt;p style="margin: 0px;"&gt;  &lt;span style="color: blue;"&gt;Function&lt;/span&gt; TransformXML(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; xDoc &lt;span style="color: blue;"&gt;As&lt;/span&gt; Xml.XmlDocument, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; xsltText &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt;) &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;' Carica l'xslt&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; xslt &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Xml.Xsl.XslCompiledTransform()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; xsltStringReader &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; IO.StringReader(xsltText)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; xsltXmlReader &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Xml.XmlTextReader(xsltStringReader)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    xslt.Load(xsltXmlReader)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;' Crea il reader per l'XML in XDOC&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; xDocStringReader &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; IO.StringReader(xDoc.OuterXml)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; xDocXmlReader &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Xml.XmlTextReader(xDocStringReader)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;' Crea il writer per l'html&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; htmlStringBuilder &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Text.StringBuilder()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; htmlStringWriter &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; IO.StringWriter(htmlStringBuilder)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; htmlXmlReaderWriter &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Xml.XmlTextWriter(htmlStringWriter)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;' Esegue la trasformazione&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    xslt.Transform(xDocXmlReader, htmlXmlReaderWriter)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: green;"&gt;' Retuisce il contenuto html&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;Return&lt;/span&gt; htmlStringBuilder.ToString()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;  &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/92024.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/04/02/92024.aspx</guid>
            <pubDate>Wed, 02 Apr 2008 14:55:08 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/92024.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/04/02/92024.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/92024.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/92024.aspx</trackback:ping>
        </item>
        <item>
            <title>Deserializzazione di un oggetto complesso passato come parametro in un WebMethod</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/03/17/91743.aspx</link>
            <description>Se in un WebMethod si passa come parametro un oggetto complesso si può ottenere un errore del tipo:

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---&gt; System.InvalidOperationException: There was an error generating the XML document. ---&gt; System.InvalidOperationException: A circular reference was detected while serializing an object of type MyObjectType.
   at System.Xml.Serialization.XmlSerializationWriter.Writ&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/91743.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/03/17/91743.aspx</guid>
            <pubDate>Mon, 17 Mar 2008 14:40:58 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/91743.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/03/17/91743.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/91743.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/91743.aspx</trackback:ping>
        </item>
        <item>
            <title>Componente PageSetupDialog</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/21/91317.aspx</link>
            <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Il componente PageSetupDialog ha un baco (noto) per cui se (nel computer) le impostazioni di misura sono quelle metriche i valori dei margini impostati vengono convertiti in pollici, e quindi diminuiti.&lt;/p&gt;
&lt;p&gt;In pratica, se si esegue la ShowDialog del componente l'utente può imposta il valore 10 per il margine sinistro, preme ok e voi dalla vostra applicazione leggete che ha impostato 3,9!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Il problema è descritto nell'articolo: &lt;a href="http://support.microsoft.com/?id=814355" target="_blank"&gt;http://support.microsoft.com/?id=814355&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Per ovviare a questo inconveniente possiamo modificare la chiamata alla ShowDialog del componente nel modo seguente:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red0\green128\blue0;}??\fs22 \cf1 Imports\cf0  System.Drawing.Printing\par ??\par ??\cf1 Public\cf0  \cf1 Class\cf0  Form1\par ??\par ??\tab \cf1 Private\cf0  \cf1 Sub\cf0  Button1_Click(\cf1 ByVal\cf0  sender \cf1 As\cf0  System.Object, \cf1 ByVal\cf0  e \cf1 As\cf0  System.EventArgs) _\par ??\tab \cf1 Handles\cf0  Button1.Click\par ??\tab \tab \cf4 ' Inizializza la propriet\'e0 PageSettings \par ??\cf0 \tab \tab \cf1 Me\cf0 .PageSetupDialog1.PageSettings = \cf1 New\cf0  PageSettings\par ??\tab \tab \cf4 ' Apre la finestra delle impostazioni della pagina\par ??\cf0 \tab \tab \cf1 Me\cf0 .PageSetupDialog1.ShowDialog(\cf1 Me\cf0 )\par ??\tab \tab \cf4 '============================================================\par ??\cf0 \tab \tab \cf4 ' Commentare il seguente IF per vedere la differenza\par ??\cf0 \tab \tab \cf4 '============================================================\par ??\cf0 \tab \tab \cf4 ' Esegue la coversione se il sistema corrente \'e8 metrico\par ??\cf0 \tab \tab \cf1 If\cf0  System.Globalization.RegionInfo.CurrentRegion.IsMetric \cf1 Then\par ??\cf0 \tab \tab \tab \cf1 Me\cf0 .PageSetupDialog1.PageSettings.Margins = _\par ??\tab \tab \tab PrinterUnitConvert.Convert(\cf1 Me\cf0 .PageSetupDialog1.PageSettings.Margins, _\par ??\tab \tab \tab PrinterUnit.ThousandthsOfAnInch, PrinterUnit.HundredthsOfAMillimeter)\par ??\tab \tab \cf1 End\cf0  \cf1 If\par ??\cf0 \tab \tab \cf4 ' Riapre la finestra delle impostazioni\par ??\cf0 \tab \tab \cf1 Me\cf0 .PageSetupDialog1.ShowDialog(\cf1 Me\cf0 )\par ??\tab \cf1 End\cf0  \cf1 Sub\par ??\par ??End\cf0  \cf1 Class\par ??}
--&gt;
&lt;div style="background: white none repeat scroll 0% 50%; font-size: 11pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: consolas;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    1&lt;/span&gt; &lt;span style="color: blue;"&gt;Imports&lt;/span&gt; System.Drawing.Printing&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    2&lt;/span&gt; &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    3&lt;/span&gt; &lt;span style="color: blue;"&gt;Public&lt;/span&gt; &lt;span style="color: blue;"&gt;Class&lt;/span&gt; Form1&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    4&lt;/span&gt; &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    5&lt;/span&gt;   &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.EventArgs) _&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    6&lt;/span&gt;   &lt;span style="color: blue;"&gt;Handles&lt;/span&gt; Button1.Click&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    7&lt;/span&gt;     &lt;span style="color: green;"&gt;' Inizializza la proprietà PageSettings &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    8&lt;/span&gt;     &lt;span style="color: blue;"&gt;Me&lt;/span&gt;.PageSetupDialog1.PageSettings = &lt;span style="color: blue;"&gt;New&lt;/span&gt; PageSettings&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    9&lt;/span&gt;     &lt;span style="color: green;"&gt;' Apre la finestra delle impostazioni della pagina&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   10&lt;/span&gt;     &lt;span style="color: blue;"&gt;Me&lt;/span&gt;.PageSetupDialog1.ShowDialog(&lt;span style="color: blue;"&gt;Me&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   11&lt;/span&gt;     &lt;span style="color: green;"&gt;'============================================================&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   12&lt;/span&gt;     &lt;span style="color: green;"&gt;' Commentare il seguente IF per vedere la differenza&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   13&lt;/span&gt;     &lt;span style="color: green;"&gt;'============================================================&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   14&lt;/span&gt;     &lt;span style="color: green;"&gt;' Esegue la coversione se il sistema corrente è metrico&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   15&lt;/span&gt;     &lt;span style="color: blue;"&gt;If&lt;/span&gt; System.Globalization.RegionInfo.CurrentRegion.IsMetric &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   16&lt;/span&gt;       &lt;span style="color: blue;"&gt;Me&lt;/span&gt;.PageSetupDialog1.PageSettings.Margins = _&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   17&lt;/span&gt;       PrinterUnitConvert.Convert(&lt;span style="color: blue;"&gt;Me&lt;/span&gt;.PageSetupDialog1.PageSettings.Margins, _&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   18&lt;/span&gt;       PrinterUnit.ThousandthsOfAnInch, PrinterUnit.HundredthsOfAMillimeter)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   19&lt;/span&gt;     &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;If&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   20&lt;/span&gt;     &lt;span style="color: green;"&gt;' Riapre la finestra delle impostazioni&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   21&lt;/span&gt;     &lt;span style="color: blue;"&gt;Me&lt;/span&gt;.PageSetupDialog1.ShowDialog(&lt;span style="color: blue;"&gt;Me&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   22&lt;/span&gt;   &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   23&lt;/span&gt; &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   24&lt;/span&gt; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Class&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/91317.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/21/91317.aspx</guid>
            <pubDate>Fri, 22 Feb 2008 11:28:38 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/91317.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/21/91317.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/91317.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/91317.aspx</trackback:ping>
        </item>
        <item>
            <title>Excel VBA e Regional Settings</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/19/91247.aspx</link>
            <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Il collega &lt;a target="_blank" href="http://blogs.devleap.com/osvaldoaluigi/default.aspx"&gt;Osvaldo&lt;/a&gt; mi ha segnalato oggi che una nostra applicazione che si interfaccia con Excel tramite VBA generava il seguente errore: &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;System.Runtime.InteropServices.COMException (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;Indagando sulla cosa abbiamo visto che l’errore si verifica quando sulla macchina in cui gira l'applicazione c’è office in una lingua (es English) e le regional settings in un’altra (es. italiano). &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;Per risolvere il problema è sufficiente cambiare le regional settings e metterle nella lingua di excel.  &lt;/p&gt;
&lt;p&gt;Se questa soluzione non ci piace possiamo intervenire sul codice.&lt;/p&gt;
&lt;p&gt;Se la nostra applicazione l'abbiamo già venduta e non vogliamo rilasciare la patch possiamo optare pe la terza soluzione: si può installare il Multilingual User Interface Pack per la versione speficica di office.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;L’articolo che descrive e risolve il problema è il seguente: &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://support.microsoft.com/default.aspx?scid=kb;en-us;320369"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;320369&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/91247.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/19/91247.aspx</guid>
            <pubDate>Tue, 19 Feb 2008 14:46:20 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/91247.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/19/91247.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/91247.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/91247.aspx</trackback:ping>
        </item>
        <item>
            <title>Add-in per VS2005 : Collapse di una qualunque regione di codice</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/13/91179.aspx</link>
            <description>Oggi ho installato un add.in per VS 2005 con cui posso finalmente comprimere il codice come mi pare! Evviva!
Questo è il link: http://submain.com/default.aspx?nav=products.smartoutline
[...]&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/91179.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/13/91179.aspx</guid>
            <pubDate>Thu, 14 Feb 2008 08:51:40 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/91179.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2008/02/13/91179.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/91179.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/91179.aspx</trackback:ping>
        </item>
        <item>
            <title>Documenti Word: Update del valore di custom properties inserite in Header e Footer</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2007/12/17/90318.aspx</link>
            <description>Definendo in un documento Word delle custom properties è poi possibile inserirne i valori nel contenuto del documento.
Il seguente codice può essere utilizzato per aggiornare in automatico le custom properties ed il contenuto del documento: [vai al &lt;a href="http://blogs.ugidotnet.org/franx_blog/archive/2007/12/17/90318.aspx"&gt;post&lt;/a&gt;]&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/90318.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2007/12/17/90318.aspx</guid>
            <pubDate>Mon, 17 Dec 2007 15:30:47 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/90318.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2007/12/17/90318.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/90318.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/90318.aspx</trackback:ping>
        </item>
        <item>
            <title>Da oggi al cinema: &amp;quot;Non Usare KeyUp!&amp;quot; - sottotitolo: oggi ce l'ho con la Microsoft!</title>
            <link>http://blogs.ugidotnet.org/franx_blog/archive/2007/12/05/90118.aspx</link>
            <description>&lt;p&gt;Ragazzi, oggi la mia stima nei confronti della Microsoft è un po' calata.&lt;/p&gt;
&lt;p&gt;Dopo essermi lamentato della prepotenza di &lt;a href="http://blogs.ugidotnet.org/franx_blog/archive/2007/12/04/90113.aspx"&gt;outlook&lt;/a&gt;, ora mi trovo a dovermi lamentare anche della gestione eventi di VB.NET.&lt;/p&gt;
&lt;p&gt;Provate a mettere una bella textbox (con nome TextBox1) in un form e scrivere questo codice:&lt;/p&gt;
&lt;div class="CodeFormatContainer"&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;   Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;      If e.KeyCode = Keys.Return Then&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;         MessageBox.Show(&lt;span class="str"&gt;"Premuto invio"&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      End If&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;   End Sub&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Poi mandate in esecuzione, portate il focus sulla textbox e premete invio. Compare il messagebox, ri-premete invio per chiuderlo e TAC! Ricompare il messagebox.&lt;/p&gt;
&lt;p&gt;Dunque, succede che la pressione del tasto "invio" mentre è attiva la finestra del messagebox scatena la gestione dell'evento di click sul pulsante (che chiude la fistra) e mette in coda l'evento di keyup. Questo evento viene spedido sul controllo attivo ovvero a textbox1 (dal momento che la messagebox è già chiusa e quindi non se lo può gestire).&lt;/p&gt;
&lt;p&gt;Ci sarà una spiegazione a tutto questo, ma non voglio nemmeno saperla. Secondo me questo funzionamento non è quello che ci si aspetterebbe!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Comunque se vi capita una situazione del genere poteve ovviare al problema usando l'evento KeyDown o KeyPress al posto di KeyUp. L'importante è &lt;strong&gt;NON USARE KEYUP&lt;/strong&gt;!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/franx_blog/aggbug/90118.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Geri</dc:creator>
            <guid>http://blogs.ugidotnet.org/franx_blog/archive/2007/12/05/90118.aspx</guid>
            <pubDate>Wed, 05 Dec 2007 17:09:29 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/franx_blog/comments/90118.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/franx_blog/archive/2007/12/05/90118.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/franx_blog/comments/commentRss/90118.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/franx_blog/services/trackbacks/90118.aspx</trackback:ping>
        </item>
    </channel>
</rss>