英語で読む

次の方法で共有


IDictionaryService インターフェイス

定義

サービスを通じて、デザイナーがユーザー定義データを格納するために使用できる、基本的な、コンポーネント サイト固有の、キーと値のペアのディクショナリを提供します。

C#
public interface IDictionaryService

次のコントロールとデザイナーの例では、 を IDictionaryService 使用して、サイト固有のキーと値のペアディクショナリを使用してデータを共有します。

C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace IDictionaryServiceControl
{
    // This example control works with the IDictionaryServiceDesigner to demonstrate
    // using the IDictionaryService for storing data provided by a designer, and
    // accessing it from a control. The IDictionaryService provides a Site-specific 
    // key-based dictionary. An IDictionaryServiceDesigner sets an ArrayList of strings 
    // to the dictionary with a "DesignerData" key, and its contents are accessed and
    // displayed once the Update box is clicked at design time.
    [DesignerAttribute(typeof(IDictionaryServiceDesigner), typeof(IDesigner))]
    public class IDictionaryServiceControl : System.Windows.Forms.UserControl
    {
        public ArrayList al;

        public IDictionaryServiceControl()
        {            
            // Initializes the example control.
            al = new ArrayList();
            this.Size = new Size(344, 88);
            this.BackColor = Color.White;
        }

        // Draws the instructions and user interface, and any strings contained 
        // in a local ArrayList.
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            if( this.DesignMode )
            {
                e.Graphics.DrawString("IDictionaryServiceDesigner Control", new Font(FontFamily.GenericMonospace, 9), new SolidBrush(Color.Blue), 5, 4);                         
                e.Graphics.DrawString("Click the Update box to update display strings", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.DarkGreen), 5, 17);
                e.Graphics.DrawString("from the IDictionaryService.", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.DarkGreen), 5, 29);                 
                
                e.Graphics.FillRectangle(new SolidBrush(Color.Beige), 270, 7, 60, 10);
                e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Black), 1), 270, 7, 60, 10);
                e.Graphics.DrawString("Update", new Font(FontFamily.GenericMonospace, 7), new SolidBrush(Color.Black), 282, 7);

                for( int i=0; i<al.Count; i++ )            
                    e.Graphics.DrawString((string)al[i], new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 44+(i*12));            
            }
        }

        // On mouse down, this method attempts to access the IDictionaryService and 
        // obtain an ArrayList with a key of "DesignerData" in the dictionary.
        // If successful, this ArrayList is set to the local ArrayList.
        protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
        {
            // Attempts to obtain the IDictionaryService using the Control.GetService method.
            IDictionaryService ds = (IDictionaryService)GetService(typeof(IDictionaryService));
            // If the service was obtained...
            if( ds != null )
            {
                // Attempts to retrieve a list with a key of "DesignerData".
                ArrayList list = (ArrayList)ds.GetValue( "DesignerData" );
                // If the list exists, sets the list obtained by the 
                // IDictionaryService to the local list.
                if( list != null )
                    this.al = list;
                this.Refresh();
            }
        }
    }

    // This designer uses the IDictionaryService to store an ArrayList of
    // information strings that the associated control can access and 
    // display. The IDictionaryService creates a new dictionary for each Site.
    public class IDictionaryServiceDesigner : System.Windows.Forms.Design.ControlDesigner
    {
        public IDictionaryServiceDesigner()
        {
        }

        // On designer initialization, this method attempts to obtain 
        // the IDictionaryService, and populates an ArrayList
        // associated with a "DesignerData" key in the dictionary with 
        // designer- and control-related information strings.
        public override void Initialize(System.ComponentModel.IComponent component)
        {
            base.Initialize(component);            
            IDictionaryService ds = (IDictionaryService)component.Site.GetService(typeof(IDictionaryService));
            if( ds != null )
            {
                // If the dictionary service does not contain a 
                // DesignerData key, adds an ArrayList for that key.
                if( ds.GetValue( "DesignerData" ) == null )           
                {
                    ds.SetValue( "DesignerData", new ArrayList() );
                       ds.SetValue( "DesignerData", new ArrayList() );
                }

                // Obtains the ArrayList with the "DesignerData" key 
                // from the dictionary service.
                ArrayList al = (ArrayList)ds.GetValue( "DesignerData" );
                if( al != null )
                {
                    al.Clear();
                    // Populates the array list with designer and 
                    // control information strings.
                    al.Add( "Designer type: "+this.GetType().Name );
                    al.Add( "Control type:  "+this.Control.GetType().Name );
                    al.Add( "Control name:  "+this.Control.Name );                    
                }
            }
        }

        protected override bool GetHitTest(System.Drawing.Point point)
        {
            // Translates the point to client coordinates and passes the 
            // messages to the control while over the click box.
            Point translated = this.Control.PointToClient(point);
            if( translated.X > 269 && translated.X < 331 
                && translated.Y > 7 && translated.Y < 18 )
                return true;
            else
                return base.GetHitTest(point);
        }
    }
}

注釈

このサービスは、関連付けられたキーを持つオブジェクトを設定、取得、および検索するための簡単なインターフェイスを提供します。

メソッド

GetKey(Object)

指定した値に対応するキーを取得します。

GetValue(Object)

指定したキーに対応する値を取得します。

SetValue(Object, Object)

指定したキーと値の組み合わせを設定します。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1