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

Bei Visual Studio 2005 hat sich die Ressourcen-Einbindung verbessert und kann nun streng typisiert abgerufen werden. Der Designer setzt eigene:
internal static string String2
{get{return ResourceManager.GetString("String2", resourceCulture);}}
-Eigenschaften ein, die über einen automatisch eingefügten Namespace:
Properties und einer Resources-Klasse abgerufen werden können:
MessageBox.Show(Resources.String2); /*using Ressource2005.Properties;*/
Hier ein paar Vorgehensweisen für eine zusätzlichen Sprache:

Doppelklicken Sie auf 'Resources.resx' und tragen Ihre Value's ein :
Bild 1

RechteMaustaste auf das Projekt -> Add / NewItem / Resources-File / Resources.en-GB.resx
Es wird nun eine resx-Datei unten eingefügt. Ziehen Sie nun per Drag&Drop diese Datei auf die Resources.resx (bzw. in den Properties-Ordner)

Bild 2
___________________________________________________________
Interessant auch hier auch das freie Resource Refactoring Tool von Microsoft.
Es extrahiert hart gecodete Strings aus dem Code in typsichere Ressource-Namen.
using System;
using System.Windows.Forms;
using System.Globalization;
using System.Resources;
using System.Reflection;
using Ressource2005.Properties;

namespace Ressource2005
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    static string NL = Environment.NewLine;
    private void Form1_Load(object sender, EventArgs e)
    {
      ShowAllResources();

      // Altes Vorgehen bei VS 2003 / aber auch unter 2005 möglich:
      ResourceManager rm = new ResourceManager(this.GetType().NameSpace+".Properties.Resources", this.GetType().Assembly);
      MessageBox.Show("1: 2003: " + rm.GetString("String1"));
      MessageBox.Show("2: 2005: " + Resources.String2);

      Resources.Culture = new CultureInfo("en-GB");
      MessageBox.Show("3: 2005 mit CultureInfo: " + Resources.String2);
    }

    /// <summary> Zeigt alle eingebetteten Ressource-Namen an</summary> 
    static void ShowAllResources()
    {
      Assembly thisExe = Assembly.GetExecutingAssembly();
      string[] resources = thisExe.GetManifestResourceNames();
      string list = ""; 
      foreach (string resource in resources) list += resource + NL;
      MessageBox.Show("Verfügbare Ressource-Namen:" + NL + list);
    }
  }
}