Export (0) Print
Expand All

IResourceService Interface

Provides an interface for designers to access resource readers and writers for specific CultureInfo resource types.

Namespace: System.ComponentModel.Design
Assembly: System (in system.dll)

public interface IResourceService
public interface IResourceService
public interface IResourceService
Not applicable.

A resource writer or resource reader can be used to serialize or deserialze objects or data according to the specified CultureInfo resource settings.

The following example demonstrates a designer that uses the IResourceService to read from and write to resource files in order to configure a property of an associated control.

using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Globalization;
using System.Resources;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace IResourceServiceExample
{
    // Associates the ResourceTestControlDesigner with the 
    // ResourceTestControl class.
    [Designer(typeof(ResourceTestControlDesigner))]
    public class ResourceTestControl : System.Windows.Forms.UserControl
    {
        // Initializes a string array used to store strings that 
        // this control displays.
        public string[] resource_strings = new string[] { "Initial Default String #1", "Initial Default String #2" };

        public ResourceTestControl()
        {
            this.BackColor = Color.White;
            this.Size = new Size(408, 160);
        }

        // Draws the strings contained in the string array.
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            e.Graphics.DrawString("IResourceService Example Designer Control", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Blue), 2, 2);
            e.Graphics.DrawString("String list:  (use shortcut menu in design mode)", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 2, 20);
            
            for(int i=0; i<resource_strings.Length; i++)
            {
                e.Graphics.DrawString(resource_strings[i], new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.SeaGreen), 2, 38+(i*18));
            }
        }
    }

    // This designer offers several menu commands for the 
    // shortcut menu for the associated control.
    // These commands can be used to reset the control's string 
    // list, to generate a default resources file, or to load the string 
    // list for the control from the default resources file.
    public class ResourceTestControlDesigner : System.Windows.Forms.Design.ControlDesigner
    {
        public ResourceTestControlDesigner()
        {}

        public override System.ComponentModel.Design.DesignerVerbCollection Verbs
        {
            get
            {
                // Creates a collection of designer verb menu commands 
                // that link to event handlers in this designer.
                return new DesignerVerbCollection( new DesignerVerb[] { 
                    new DesignerVerb("Load Strings from Default Resources File", new EventHandler(this.LoadResources)),
                    new DesignerVerb("Create Default Resources File", new EventHandler(this.CreateResources)),
                    new DesignerVerb("Clear ResourceTestControl String List", new EventHandler(this.ClearStrings)) });
            }
        }

        // Sets the string list for the control to the strings 
        // loaded from a resource file.
        private void LoadResources(object sender, EventArgs e)
        {
            IResourceService rs = (IResourceService)this.Component.Site.GetService(typeof(IResourceService));
            if( rs == null )
                throw new Exception("Could not obtain IResourceService.");

            IResourceReader rr = rs.GetResourceReader(CultureInfo.CurrentUICulture);
            if( rr == null )
                throw new Exception("Resource file could not be obtained. You may need to create one first.");

            IDictionaryEnumerator de = rr.GetEnumerator();
            
            if(this.Control.GetType() == typeof(ResourceTestControl))
            {
                ResourceTestControl rtc = (ResourceTestControl)this.Control;
                string s1, s2, s3;		
                de.MoveNext();		
                s1 = (string)((DictionaryEntry)de.Current).Value;
                de.MoveNext();
                s2 = (string)((DictionaryEntry)de.Current).Value;
                de.MoveNext();
                s3 = (string)((DictionaryEntry)de.Current).Value;
                de.MoveNext();
                rtc.resource_strings = new string[] {s1, s2, s3};
                this.Control.Refresh();
            }
            
        }

        // Creates a default resource file for the current 
        // CultureInfo and adds 3 strings to it.
        private void CreateResources(object sender, EventArgs e)
        {
            IResourceService rs = (IResourceService)this.Component.Site.GetService(typeof(IResourceService));
            if( rs == null )
                throw new Exception("Could not obtain IResourceService.");

            IResourceWriter rw = rs.GetResourceWriter(CultureInfo.CurrentUICulture);
            rw.AddResource("string1", "Persisted resource string #1");
            rw.AddResource("string2", "Persisted resource string #2");
            rw.AddResource("string3", "Persisted resource string #3");
            rw.Generate();
            rw.Close();
        }

        // Clears the string list of the associated ResourceTestControl.
        private void ClearStrings(object sender, EventArgs e)
        {
            if(this.Control.GetType() == typeof(ResourceTestControl))
            {
                ResourceTestControl rtc = (ResourceTestControl)this.Control;
                rtc.resource_strings = new string[] { "Test String #1", "Test String #2" };
                this.Control.Refresh();
            }
        }
    }
}

package IResourceServiceExample; 

import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Drawing.*;
import System.Globalization.*;
import System.Resources.*;
import System.Windows.Forms.*;
import System.Windows.Forms.Design.*;
// Associates the ResourceTestControlDesigner with the 
// ResourceTestControl class.
/** @ attribute Designer(ResourceTestControlDesigner .class.ToType())
 */
public class ResourceTestControl extends System.Windows.Forms.UserControl
{
    // Initializes a string array used to store strings that 
    // this control displays.
    public String resource_strings[] = new String[] 
        { "Initial Default String #1", "Initial Default String #2" };

    public ResourceTestControl()
    {
        this.set_BackColor(Color.get_White());
        this.set_Size(new Size(408, 160));
    } //ResourceTestControl

    // Draws the strings contained in the string array.
    protected void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {
        e.get_Graphics().DrawString("IResourceService Example Designer Control",
            new Font(FontFamily.get_GenericMonospace(), 10),
            new SolidBrush(Color.get_Blue()), 2, 2);
        e.get_Graphics().DrawString(
            "String list:  (use shortcut menu in design mode)", 
            new Font(FontFamily.get_GenericMonospace(), 8), 
            new SolidBrush(Color.get_Black()), 2, 20);
        for (int i = 0; i < resource_strings.length; i++) {
            e.get_Graphics().DrawString(
                System.Convert.ToString(resource_strings.get_Item(i)), 
                new Font(FontFamily.get_GenericMonospace(), 8), 
                new SolidBrush(Color.get_SeaGreen()), 2, 38 + i * 18);
        }
    } //OnPaint
} //ResourceTestControl

// This designer offers several menu commands for the 
// shortcut menu for the associated control.
// These commands can be used to reset the control's string 
// list, to generate a default resources file, or to load the string 
// list for the control from the default resources file.
public class ResourceTestControlDesigner 
    extends System.Windows.Forms.Design.ControlDesigner
{
    public ResourceTestControlDesigner()
    {
    } //ResourceTestControlDesigner

    /** @property
     */
    public System.ComponentModel.Design.DesignerVerbCollection get_Verbs()
    {
        // Creates a collection of designer verb menu commands 
        // that link to event handlers in this designer.
        return new DesignerVerbCollection(new DesignerVerb[] 
            {   new DesignerVerb("Load Strings from Default Resources File", 
                new EventHandler(this.LoadResources)), 
                new DesignerVerb("Create Default Resources File", 
                new EventHandler(this.CreateResources)), 
                new DesignerVerb("Clear ResourceTestControl String List", 
                new EventHandler(this.ClearStrings)) });
    } //get_Verbs

    // Sets the string list for the control to the strings 
    // loaded from a resource file.
    private void LoadResources(Object sender, EventArgs e) throws Exception
    {
        IResourceService rs = (IResourceService)(
            this.get_Component().get_Site().
            GetService(IResourceService.class.ToType()));
        if (rs == null) {
            throw new Exception("Could not obtain IResourceService.");
        }
        IResourceReader rr 
            = rs.GetResourceReader(CultureInfo.get_CurrentUICulture());
        if (rr == null) {
            throw new Exception("Resource file could not be obtained."
                + " You may need to create one first.");
        }
        IDictionaryEnumerator de = rr.GetEnumerator();
        if (this.get_Control().GetType().
            Equals(ResourceTestControl.class.ToType())) {
            ResourceTestControl rtc 
                = (ResourceTestControl)this.get_Control();
            String s1, s2, s3;
            de.MoveNext();
            s1 = (String)
                ((DictionaryEntry)(de.get_Current())).get_Value();
            de.MoveNext();
            s2 = (String)
                ((DictionaryEntry)(de.get_Current())).get_Value();
            de.MoveNext();
            s3 = (String)
                ((DictionaryEntry)(de.get_Current())).get_Value();
            de.MoveNext();
            rtc.resource_strings = new String[] { s1, s2, s3 };
            this.get_Control().Refresh();
        }
    } //LoadResources

    // Creates a default resource file for the current 
    // CultureInfo and adds 3 strings to it.
    private void CreateResources(Object sender, EventArgs e) throws Exception
    {
        IResourceService rs = (IResourceService)(
            this.get_Component().get_Site().
            GetService(IResourceService.class.ToType()));
        if (rs == null) {
            throw new Exception("Could not obtain IResourceService.");
        }
        IResourceWriter rw 
            = rs.GetResourceWriter(CultureInfo.get_CurrentUICulture());

        rw.AddResource("string1", "Persisted resource string #1");
        rw.AddResource("string2", "Persisted resource string #2");
        rw.AddResource("string3", "Persisted resource string #3");
        rw.Generate();
        rw.Close();
    } //CreateResources

    // Clears the string list of the associated ResourceTestControl.
    private void ClearStrings(Object sender, EventArgs e)
    {
        if (this.get_Control().GetType().
            Equals(ResourceTestControl.class.ToType())) {
            ResourceTestControl rtc 
                = (ResourceTestControl)(this.get_Control());
            rtc.resource_strings = new String[] {
                "Test String #1", "Test String #2" };
            this.get_Control().Refresh();
        }
    } //ClearStrings
} //ResourceTestControlDesigner

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft