Dopo che gli studenti di Visual Basic hanno appreso tutto sui loop, le istruzioni condizionali e le subroutine, una delle prossime cose che spesso chiedono è: "Come posso aggiungere una bitmap, un file .wav, un cursore personalizzato o qualche altro effetto speciale?" Una risposta sono i file di risorse. Quando aggiungi un file di risorse al tuo progetto, viene integrato per la massima velocità di esecuzione e il minimo fastidio durante il confezionamento e la distribuzione dell'applicazione.
L'uso dei file di risorse non è l'unico modo per includere i file in un progetto VB, ma presenta vantaggi reali. Ad esempio, è possibile includere una bitmap in un controllo PictureBox o utilizzare l'API Win32 mciSendString.
Microsoft definisce una risorsa come "qualsiasi dato non eseguibile distribuito logicamente con un'applicazione".
Il modo più semplice per gestire i file di risorse nel progetto è selezionare la scheda Risorse nelle proprietà del progetto. Si apre questo facendo doppio clic su Il mio progetto in Esplora soluzioni o nelle proprietà del progetto nella voce di menu Progetto.
L'uso dei file di risorse aggiunge un altro vantaggio: una migliore globalizzazione. Le risorse sono normalmente incluse nell'assembly principale, ma .NET consente anche di raggruppare le risorse in assembly satellite. In questo modo, ottieni una migliore globalizzazione perché includi solo i complessi satellitari necessari. Microsoft diede a ogni dialetto una lingua un codice. Ad esempio, il dialetto americano dell'inglese è indicato dalla stringa "en-US" e il dialetto svizzero del francese è indicato da "fr-CH". Questi codici identificano gli assiemi satellite che contengono file di risorse specifici della cultura. Quando viene eseguita un'applicazione, Windows utilizza automaticamente le risorse contenute nell'assieme satellite con la cultura determinata dalle impostazioni di Windows.
Poiché le risorse sono una proprietà della soluzione in VB.Net, è possibile accedervi proprio come altre proprietà: per nome utilizzando l'oggetto My.Resources. Per illustrare, esamina questa applicazione progettata per visualizzare icone per i quattro elementi di Aristotele: aria, terra, fuoco e acqua.
Innanzitutto, devi aggiungere le icone. Seleziona la scheda Risorse dalle proprietà del tuo progetto. Aggiungi icone selezionando Aggiungi file esistente dal menu a discesa Aggiungi risorse. Dopo aver aggiunto una risorsa, il nuovo codice è simile al seguente:
Private Sub RadioButton1_CheckedChanged (...
Gestisce MyBase.Load
Button1.Image = My.Resources.EARTH.ToBitmap
Button1.Text = "Terra"
End Sub
Se si utilizza Visual Studio, è possibile incorporare risorse direttamente nell'assieme di progetto. Questi passaggi aggiungono un'immagine direttamente al tuo progetto:
È quindi possibile utilizzare la bitmap direttamente nel codice in questo modo (dove la bitmap era la terza, indice numero 2 nell'assieme).
Dim res () As String = GetType (Form1) .Assembly.GetManifestResourceNames ()
PictureBox1.Image = New System.Drawing.Bitmap (_
GetType (Form1) .Assembly.GetManifestResourceStream (res (2)))
Sebbene queste risorse siano incorporate come dati binari direttamente nell'assembly principale o nei file di assembly satellite, quando si crea il progetto in Visual Studio, vengono indicati da un formato di file basato su XML che utilizza l'estensione .resx. Ad esempio, ecco un frammento del file .resx che hai appena creato:
digitare = "System.Resources.ResXFileRef,
System.Windows.Forms ">
... \ Resources \ CLOUD.ICO; System.Drawing.Icon,
System.Drawing, Version = 2.0.0.0,
Culture = neutral,
PublicKeyToken = b03f5f7f11d50a3a
Poiché sono solo file XML di testo, un file .resx non può essere utilizzato direttamente da un'applicazione .NET framework. Deve essere convertito in un file ".resources" binario, aggiungendolo all'applicazione. Questo lavoro viene eseguito da un programma di utilità denominato Resgen.exe. Potresti voler fare questo per creare gli assiemi satellitari per la globalizzazione. Devi eseguire resgen.exe da un prompt dei comandi.
"Panoramica delle risorse". Microsoft, 2015.