當前位置: 首頁>>代碼示例>>C#>>正文


C# IDictionaryService接口代碼示例

本文整理匯總了C#中System.ComponentModel.Design.IDictionaryService接口的典型用法代碼示例。如果您正苦於以下問題:C# IDictionaryService接口的具體用法?C# IDictionaryService怎麽用?C# IDictionaryService使用的例子?那麽, 這裏精選的接口代碼示例或許可以為您提供幫助。


IDictionaryService接口屬於System.ComponentModel.Design命名空間,在下文中一共展示了IDictionaryService接口的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: typeof

//引入命名空間
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);
        }
    }
}
開發者ID:.NET開發者,項目名稱:System.ComponentModel.Design,代碼行數:125,代碼來源:IDictionaryService


注:本文中的System.ComponentModel.Design.IDictionaryService接口示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。