Tips
Tips
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
...
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...
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
...
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
...
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....
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” ...
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:
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,...
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]
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
...
Ogni volta che installo Visual Studio in una nuova macchina non mi prendo mai la briga di copiare i settings dalla vecchia... è un classico. Poco male, l'unica impostazione di default di Visual Studio che mi irrita davvero è quella per cui quando apro in Edit un file non lo vedo selezionato nella Solution Explorer. Mi segno in questo post come fare ad attivarla: Tools -> Options -> Projects and Solutions -> Track active Item in Solution Explorer
Inserendo una Textbox in un UpdatePanel (AJAX) può succedere (o succede sempre?) che la textbox perda il focus, o non lo possa prendere affatto.
Un modo per ovviare alla cosa è di registrare uno script che imposti il focus con un piccolo ritardo rispetto alla load:
1: Dim script As String = "setTimeout(""$('" & MyTextBox.ClientID & "').focus(); "", 100);"
2: ScriptManager.RegisterStartupScript(updSearch, GetType(String), "set_focus_script", script, True)
Il post mostra un semplice tip per vedere se un punto è visibile nello schermo (anche in presenza di più schermi). La grafica dell'esempio è "mozzafiato": Il codice è invece il seguente: 1: Public Class Form1
2:
3: Private Sub Button1_Click(ByVal sender As System.Object, _
4: ...
Oggi ho avuto dei problemi a collegare due dropdownlist a fonti dati basate su XML.
Andiamo per ordine.
Ho creato un'applicazione con 2 DropDownList, ciascuna collegata ad un XmlDataSource che si legge un suo file XML: ...
Ho un progetto in Visual Studio 2005 che fa uso di una DLL esterna che, in DEBUG, mi genera il seguente errore: LoaderLock was detected Message: DLL 'C:\Windows\assembly\GAC\dllEsterna\4.0.22.1__80d669b8b606a2da\dllEsterna.dll' is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang. L'errore interrompe il debug e mi costringe a fare un po' di click di "OK" o "Continua" prima di poter andare avanti. La cosa non è piacevole e rallenta...
Se usate Microsoft Office Communicator per la messaggistica istantanea e vi sembra scomodo il fatto che i link non siano clickabili.... ecco come risolvere il problema: Tutto chiaro? Riassumo: Aprire Regedit Navigare fino a: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator Creare un nuovo valore di tipo DWORD con nome EnableURL e valore 1
Oggi mi sono imbattuto in quella che a me pare una stranezza. Ho una windows form con una ComboBox in stile DropDownList, definita ad esempio nel modo seguente: 1 Me.ComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList 2 Me.ComboBox1.FormattingEnabled = True 3 Me.ComboBox1.Items.AddRange(New Object() {"valore 1", "valore 2", "valore 3"}) 4 Me.ComboBox1.Location = New System.Drawing.Point(43, 34) 5 Me.ComboBox1.Name = "ComboBox1" 6 Me.ComboBox1.Size = New System.Drawing.Size(149, 21) 7 Me.ComboBox1.TabIndex = 0 Vorrei modificare...
Definiamo una pagina aspx con un controllo DropDownList al quale aggiungiamo un dei ListItem da codice. Vogliamo creare i ListItem con un attributo per memorizzare una informazione che ci interessa: ListItem item; item = new ListItem("Valore 1", "V1"); item.Attributes.Add("MyCustomAttribute", "CUSTOM 1"); this.MyDropDownList.Items.Add(item); item = new ListItem("Valore 2", "V2"); item.Attributes.Add("MyCustomAttribute", "CUSTOM 2"); this.MyDropDownList.Items.Add(item); Mettiamo in esecuzione e ci accorgiamo che l'attributo viene perso al primo postback. Sembra si tratti di un...
Ciao, qui è disponibile un utile utility per rimuovere una associazione tra un tipo di file e la relativa applicazione. Dico che è utile perché non mi pare che Vista dia l'interfaccia per ottenere questa funzionalità.
Problema: 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. Soluzione: Certo, direte voi, devi usare le date in formato UTC. 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. L'esempio suppone che: ci sia un documento all'url http://myServer/mySite/myDocLib ...
Ho riscontrato in una mia applicazione uno strano comportamento. 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. 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...
Problema:
Abbiamo una tabella in un database SQL Server, vogliamo scrivere uno script che aggiunge un campo che sia non nullo e senza default.
Svolgimento:
Il semplice script seguente...
alter table MiaTabella
add MioCampo varchar(255) not null
...potrebbe non funzionare se la tabella ha già dei record. Infatti Una volta aggiunta la nuova colonna, che valore avrà per i record già presenti? Non potrà essere nulla, ma non è specificato un valore di default.
Per cui dovremmo scrivere il seguente script:
alter table MiaTabella
add MioCampo varchar(255) not null default ('')
In questo modo i vecchi record avranno come valore la stringa vuota e quindi lo...
Posto nel mio blog (perché così me lo ritrovo subito) un post (liberamente modificato) che mi è stato utile un paio di volte. By default, Windows is caching Certificate Revocation Lists (CRL) and CA certificates to quickly verify certificate chains. The downside of this behavior is that a newer CRL is not picked up by the client until the locally cached CRL has expired. Windows versions before Windows Vista do not support deletion or a forced update of the CRL cache. You can view what is in...
La trasformazione via codice di un file XML in HTML tramite file XSLT è molto semplice (cito liberamente da MSDN):
' Load the style sheet.Dim xslt As New XslCompiledTransform()xslt.Load("output.xsl") ' Execute the transform and output the results to a file.xslt.Transform("books.xml", "books.html")
Il codice riportato lavora su file fisici, messi da qualche parte.
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.
Function TransformXML(ByVal xDoc As Xml.XmlDocument, ByVal xsltText As String) As String
' Carica...
Ogni tanto devo fare un po' di yoga per non maledire Vista...
Come sapete Vista nasce per memorizzare file musicali e video. Non va bene per chi deve sviluppare o scrivere documenti di testo o altre cose.
La dimostrazione di ciò è il fatto che per Vista tutte le cartelle contengono file musicali. E' facile capirlo, visto che in ogni cartella (anche se uno fa duitutto per dimostrare il contrario!) i dettagli dei file sono: il rating, l'artista, la lunghezza del brano, il produttore!
Per questo è utilie avere sempre sottomano il link al post di Marc Clifton in cui è descritto il...
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. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: A circular reference was detected while serializing an object of type MyObjectType.
at System.Xml.Serialization.XmlSerializationWriter.Writ
Facendo la build di un progetto di setup con VS2005 in un pc con Vista, potrebbe saltar fuori questo errore:
L'errore è questo:
0:Watson 1:1304 2:StreamSupportFiles
3:streamBinaryToDisk 4:5
5:t:\yukon\sql\setup\darwin\sqlcastub\streamca.cpp
6:238 7:sqlcastub 8:sqlrun.msi
Premendo OK ne compare un altro:
Error writing to file: Access is denied
Verify that you have access to that directory
Questo può succedere se si ha Vista, Visual Studio 2005 Professional ed SQL Server 2005 Developer.
Soluzione:
Avviando VS2005 As Asdministrator non si ha l'errore
Installando una versione successiva della dll mergemod.dll che pare essere la causa del problema (come suggeriscono qui):...
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.
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!
Il problema è descritto nell'articolo: http://support.microsoft.com/?id=814355
Per ovviare a questo inconveniente possiamo modificare la chiamata alla ShowDialog del componente nel modo seguente:
1 Imports System.Drawing.Printing
2
3 Public Class Form1
4
5 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
6 Handles Button1.Click
7 ' Inizializza la proprietà PageSettings
8 ...
Il collega Osvaldo mi ha segnalato oggi che una nostra applicazione che si interfaccia con Excel tramite VBA generava il seguente errore:
System.Runtime.InteropServices.COMException (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
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).
Per risolvere il problema è sufficiente cambiare le regional settings e metterle nella lingua di excel.
Se questa soluzione non ci piace possiamo intervenire sul codice.
Se la nostra applicazione l'abbiamo già venduta e non vogliamo rilasciare la patch...
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
[...]
Oggi mi sono chiesto come si fa a stabilire il comportamento di Internet Explorer al click su un link ad un documento Word.
Le possibilità sono 2, o si avvia Word (esternamente) aprendo il documento oppure il documento viene mostrato dentro al browser.
Per modificare questo comportamento ci sono 2 vie:
Usando il registro (ovvio!)
Seguento questa procedura (cito da qui):
Per configurare Internet Explorer in modo che i file di Office vengano aperti nel programma di Office appropriato utilizzando lo strumento Opzioni cartella:
1. Aprire Risorse del computer.
2. Nel menu Strumenti...
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 post]
Oggi ho caricato un documento .p7m in una document library di SharePoint 2007.
Poi ne ho fatto il download e magicamente il mio file .p7m era diventato un .p7c...
Cioè se su SharePoint c'è un file p7m e si prova a scaricarlo o aprirlo SharePoint lo restituisce cambiandogli l'estensione in p7c.
Basta rinominarlo per riavere il file di origine.
Tuttavia, per risolvere il problema alla radice occorre:
andare sul web server iis (sul web site di riferimento)
aggiungere o modificare l'estensione .p7m con il seguente mime type: x-application/pkcs7-mime.
...
Oggi mi è capitato di riscontrare su un server con installato SharePoint Portal Server 2007 una serie di strani malfuzionamenti. Nel registro eventi di Windows ho trovato una serie molto numerosa di log con il seguente errore: "The description for Event ID ( 27745 ) in Source ( Windows SharePoint Services 3 ) ... [continua qui]
Oggi avevo bisogno di aggiungere la reference ad una DLL
in un progetto VS2005 (VB).
La DLL si trovava nella GAC e con mio malcelato stupore non sono riuscito a trovare la DLL fra quelle elencate nella finestra "Add Reference" di Visual Studio.
Per cui ho fatto quanto segue:
ho estratto la DLL dalla GAC (usando il prompt di DOS... ma si può usare un tool come questo);
l'ho copiata nella cartella "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies"
Ho riaperto la finestra "Add Reference" e sotto il pannello .NET ho selezionato la mia...
Liberamente tratto da MSDN riporto il codice per la validazione di un file XML da uno schema XSD. ...qui
Al classico Backgroundworker si può facilmente aggiungere la funzionalità di Pausa.
Basta creare una semplice classe custom del tipo seguente: ...vai
Il codice seguente esegue l'upload di un documento su MOSS 07.
Le parti interessanti del codice proposto sono 2:
Il codice imposta anche le proprietà del documento in un'unica operazione, quindi generando un'unica versione del documento (nel caso di versionamento attivato). Da notare che la stessa cosa non era possibile nel modello ad oggetti di SharePoint 2003.
I valori delle proprietà sono impostati in base al nome visualizzato della proprietà stessa, per cui il codice si preoccupa di trovare il nome interno e convertirlo nel formato opportuno.
Imports Microsoft.SharePoint
Sub UploadFile()
' Recupera l'oggetto SPSite
...
Ciao,
il mio Visual Studio 2005 ha un problema con le icone della toolbox.
Nel pannello "All Windows Forms" alcune icone dei componenti sono andate perdute e sono state sostituite da un'unica icona (che tra l'altro ogni tanto cambia...).
...
Oggi mi è capitato un problemino con un progetto di un webservice.
Il progetto faceva riferimento ad una dll che stava su un percorso di rete condiviso, all'interno della mia intranet.
Capitava che quando facevo la Build del progetto in modalità Debug tutto funzionava bene, mentre in Release falliva...
Ciao, può capitare a causa di non so bene cosa (ma potete vedere qui o qui o qui o qui alcuni esempi) che scompaia da IIS Manager il tab ASP.NET, da cui poter ad esempio scegliere se usare il framework 2.0 o precedente.
In questi casi potete provare a cancellare alcune chiavi di registro, cito:
Microsoft comments: If a previous version was not uninstalled correctly, please regedit eliminate all versions except 2.0.0.0 in the following locations:HKEY_CLASSES_ROOT\CLSID\{7D23CCC6-A390-406E-AB67-2F8B7558F6F6}\InprocServer32\HKEY_CLASSES_ROOT\CLSID\{FD5CD8B1-6FE0-44F3-BBFB-65E3655B096E} \InprocServer32\HKEY_CLASSES_ROOT\CLSID\{FEDB2179-2335-48F0-AA28-5CDA35A2B36D}\InprocServer32\
Oppure provare questo simpatico tool ASP.NET Version Switcher:
Come creare Report con Visual Studio .NET?
Ecco alcune possibilità:
Crystal Report
Apex SQL Report: si tratta di un tool per scrivere Report per il database Sql Server
Report Sharp-Shooter Express: è la versione free di Report Sharp-Shooter™.
StimulReport.Net: invocabile sia da winForms che asp.net
Salve a tutti.
Vi segnalo un comportamento un po' strano che ho riscontrato oggi con VisualStudio2005. Che sia un bachetto?
Comunque, si tratta di questo.
Ho una libreria per la quale ho impostato il flag di generazione del file di documentazione XML:
[vedi qui...]
Sono certo che tutto il mondo lo sa benissimo, ma c'è una caratteristica in Visual Studio (2005, 2003, non so se anche prima...) davvero utilissima: la possibilità di selezionare il testo in column mode. Supponiamo di avere questo codice: Ora basta tenere premuto il tasto ALT di destra e selezionare il testo tenendo premuto il tasto sinistro del mouse: Davvero utile! Ciao!