Resource-Einbindung in VB.NET 2.0 - Visual Studio .NET 2005
[VB.NET], Frank Dzaebel, erstellt am: 25.9.2005, zuletzt geändert: 22.6.2007, [siehe auch C#-Version]
Kategorie:Ressourcen, .NET-Version:2.0 

Bei Visual Studio 2005 hat sich die Ressourcen-Einbindung verbessert und kann nun streng typisiert abgerufen werden.
Der Designer setzt eigene: FriendReadOnly Property String2() As String  Eigenschaften ein, die über ein Resources-Modul abgerufen werden können. Hier ein paar Vorgehensweisen mit einer zusätzlichen Sprache:


-


-
Klicken Sie auf das kleine Icon "Alle Dateien anzeigen".
 
Doppelklicken Sie auf "Resources.resx" (diese kann sich ggf. auch im Ordner My Project befinden) und tragen Ihre Value's ein :
 -


 -


 -
RechteMaustaste auf "Resources.resx" (das sich evtl. in My Project befindet)

kopieren, dann im Projekt wieder einfügen
Es wird nun eine resx-Datei unten eingefügt.

umbenennen auf "Resources.en-GB.resx" Geben Sie dort die englischen Werte ein:

(Tatsächlich ist es auch möglich, alle Ressourcen in das MyProject-Verzeichnis zu bekommen, indem man dies über das Dateisystem erledigt und dann "vorhandene Dateien" zum Projekt hinzufügt.)
___________________________________________________________
Interessant hier auch das freie Resource Refactoring Tool von Microsoft.
Es extrahiert hart gecodete Strings aus dem Code in typsichere Ressource-Namen.

Imports System.Resources, System.Reflection, System.Globalization

Public Class Form1

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    ' einfach ein Integer-Wert (zeit in sec) in DateTime umwandeln kann?     
    MessageBox.Show(DateTime.Now.AddSeconds(123))
    MessageBox.Show(Convert.ToDateTime(TimeSerial(0, 0, 123)))

    ShowAllResources()
    Dim rm As ResourceManager ' Zugriff auf eine Ressource z.B.:     
    rm = New ResourceManager(Me.GetType().Namespace + ".Resources", Me.GetType().Assembly)
    MessageBox.Show("Bei 2003:" & rm.GetString("String1"))

    MessageBox.Show(My.Resources.String1)
    My.Resources.Culture = New CultureInfo("en-GB")
    MessageBox.Show(My.Resources.String2)
  End Sub
  
  ''' <summary> Zeigt alle eingebetteten Ressource-Namen an</summary> 
  Shared Sub ShowAllResources()

    Dim thisExe As Assembly : thisExe = Assembly.GetExecutingAssembly()
    Dim resources As String() : resources = thisExe.GetManifestResourceNames()
    Dim list As String : list = ""
    For Each resource As String In resources
      list &= resource & vbCrLf
    Next 
    MessageBox.Show("Verfügbare Ressourcen" & vbCrLf & list)
  End Sub 
End Class