SSISO Community

갤러리정

Help icon

/*
User  Interfaces  in  C#:  Windows  Forms  and  Custom  Controls
by  Matthew  MacDonald

Publisher:  Apress
ISBN:  1590590457
*/

using  System;
using  System.Drawing;
using  System.Collections;
using  System.ComponentModel;
using  System.Windows.Forms;

namespace  ExtenderProviderHost
{
    ///  <summary>
    ///  Summary  description  for  HelpIconProviderHost.
    ///  </summary>
    public  class  HelpIconProviderHost  :  System.Windows.Forms.Form
    {
        internal  System.Windows.Forms.TextBox  TextBox2;
        internal  System.Windows.Forms.TextBox  TextBox1;
        private  ExtenderProviderControls.HelpIconProvider  helpIconProvider1;
        private  System.ComponentModel.IContainer  components;

        public  HelpIconProviderHost()
        {
            //
            //  Required  for  Windows  Form  Designer  support
            //
            InitializeComponent();

            //
            //  TODO:  Add  any  constructor  code  after  InitializeComponent  call
            //
        }

        ///  <summary>
        ///  Clean  up  any  resources  being  used.
        ///  </summary>
        protected  override  void  Dispose(  bool  disposing  )
        {
            if(  disposing  )
            {
                if(components  !=  null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(  disposing  );
        }

        #region  Windows  Form  Designer  generated  code
        ///  <summary>
        ///  Required  method  for  Designer  support  -  do  not  modify
        ///  the  contents  of  this  method  with  the  code  editor.
        ///  </summary>
        private  void  InitializeComponent()
        {
            this.components  =  new  System.ComponentModel.Container();
            this.TextBox2  =  new  System.Windows.Forms.TextBox();
            this.TextBox1  =  new  System.Windows.Forms.TextBox();
            this.helpIconProvider1  =  new  ExtenderProviderControls.HelpIconProvider(this.components);
            this.SuspendLayout();
            //  
            //  TextBox2
            //  
            this.TextBox2.Location  =  new  System.Drawing.Point(24,  48);
            this.TextBox2.Name  =  "TextBox2";
            this.TextBox2.Size  =  new  System.Drawing.Size(148,  20);
            this.TextBox2.TabIndex  =  3;
            this.TextBox2.Text  =  "";
            //  
            //  TextBox1
            //  
            this.TextBox1.Location  =  new  System.Drawing.Point(24,  16);
            this.TextBox1.Name  =  "TextBox1";
            this.TextBox1.Size  =  new  System.Drawing.Size(104,  20);
            this.TextBox1.TabIndex  =  2;
            this.TextBox1.Text  =  "";
            //  
            //  helpIconProvider1
            //  
            this.helpIconProvider1.HelpFile  =  null;
            //  
            //  HelpIconProviderHost
            //  
            this.AutoScaleBaseSize  =  new  System.Drawing.Size(5,  13);
            this.ClientSize  =  new  System.Drawing.Size(292,  150);
            this.Controls.AddRange(new  System.Windows.Forms.Control[]  {
                                                                            this.TextBox2,
                                                                            this.TextBox1});
            this.Name  =  "HelpIconProviderHost";
            this.Text  =  "HelpIconProviderHost";
            this.Load  +=  new  System.EventHandler(this.HelpIconProviderHost_Load);
            this.ResumeLayout(false);

        }
        #endregion

        private  void  HelpIconProviderHost_Load(object  sender,  System.EventArgs  e)
        {
            helpIconProvider1.HelpFile  =  "myhelp.hlp";
            helpIconProvider1.SetHelpID(TextBox1,  "10001");
            helpIconProvider1.SetHelpID(TextBox2,  "10002");
            helpIconProvider1.SetHelpID(TextBox1,"");
        }

        
        static  void  Main()  
        {
            Application.Run(new  HelpIconProviderHost());
        }
    }
}


//=============================================================
//=============================================================

using  System;
using  System.Windows.Forms;
using  System.ComponentModel;
using  System.Collections;
using  System.Drawing;

namespace  ExtenderProviderControls
{
[ProvideProperty("HelpID",  typeof(string))]
public  class  HelpIconProvider  :  Component,  IExtenderProvider
{

    private  System.ComponentModel.Container  components  =  null;

    public  HelpIconProvider(System.ComponentModel.IContainer  container)
    {
        ///  <summary>
        ///  Required  for  Windows.Forms  Class  Composition  Designer  support
        ///  </summary>
        container.Add(this);
        InitializeComponent();

        //
        //  TODO:  Add  any  constructor  code  after  InitializeComponent  call
        //
    }

    public  HelpIconProvider()
    {
        ///  <summary>
        ///  Required  for  Windows.Forms  Class  Composition  Designer  support
        ///  </summary>
        InitializeComponent();

        //
        //  TODO:  Add  any  constructor  code  after  InitializeComponent  call
        //
    }

        #region  Component  Designer  generated  code
    ///  <summary>
    ///  Required  method  for  Designer  support  -  do  not  modify
    ///  the  contents  of  this  method  with  the  code  editor.
    ///  </summary>
    private  void  InitializeComponent()
    {
        System.Resources.ResourceManager  resources  =  new  System.Resources.ResourceManager(typeof(HelpIconProvider));
        this.pictureBox1  =  new  System.Windows.Forms.PictureBox();
        //  
        //  pictureBox1
        //  
        this.pictureBox1.Image  =  ((System.Drawing.Bitmap)(resources.GetObject("pictureBox1.Image")));
        this.pictureBox1.Location  =  new  System.Drawing.Point(17,  17);
        this.pictureBox1.Name  =  "pictureBox1";
        this.pictureBox1.TabIndex  =  0;
        this.pictureBox1.TabStop  =  false;

    }
        #endregion


        private  Hashtable  contextID  =  new  Hashtable();
    private  Hashtable  pictures  =  new  Hashtable();
    private  System.Windows.Forms.PictureBox  pictureBox1;
        private  string  helpFile;

        public  bool  CanExtend(object  extendee)
        {
                if  (extendee.GetType()  ==  typeof(Control))
                {
                        //  Ensure  the  control  is  attached  to  a  form.
                        if  (((Control)extendee).FindForm()  ==  null)
                        {
                                return  false;
                        }
                        else
                        {
                                return  true;
                        }
                }
                else
                {
                        return  false;
                }
        }

        public  string  HelpFile
    {
        get
                {
                        return  helpFile;
                }
                set
                {
                        helpFile  =  value;
                }
        }

        public  void  SetHelpID(object  extendee,  string  value)
        {
                Control  ctrl  =  (Control)extendee;

                //  Specifying  an  empty  value  removes  the  extension.
                if  (value  ==  "")
                {
                        contextID.Remove(extendee);

            //  Remove  the  picture.
            PictureBox  pic  =  (PictureBox)pictures[extendee];
            pic.DoubleClick  -=  new  EventHandler(PicDoubleClick);

            pic.Parent.Controls.Remove(pic);
            pictures.Remove(extendee);
                }
                else
                {
                        contextID[extendee]  =  value;

                        //  Create  new  icon.
                        PictureBox  pic  =  new  PictureBox();
                        pic.Image  =  pictureBox1.Image;
                        
                        //  Store  a  reference  to  the  related  control  in  the  PictureBox.
                        pic.Tag  =  extendee;

                        pic.Size  =  new  Size(16,  16);
                        pic.Location  =  new  Point(ctrl.Right  +  10,  ctrl.Top);
                        ctrl.Parent.Controls.Add(pic);

                        //  Register  for  DoubleClick  event.
                        pic.DoubleClick  +=  new  EventHandler(PicDoubleClick);

            //  Store  a  reference  to  the  help  icon  so  we  can  remove  it  later.
            pictures[extendee]  =  pic;
                }
        }

        public  string  GetHelpID(object  extendee)
        {
                if  (contextID[extendee]  !=  null)
                {
                        return  contextID[extendee].ToString();
                }
                else
                {
                        return  String.Empty;
                }
        }

        public  void  PicDoubleClick(object  sender,  EventArgs  e)
        {
                //  Invoke  help  for  control.
                Control  ctrlRelated  =  (Control)((Control)sender).Tag;

        //  Debug  message.
        MessageBox.Show("Help  triggered.");

                Help.ShowHelp(ctrlRelated,  helpFile,  HelpNavigator.Topic,  
                    contextID[ctrlRelated].ToString());
        }

}

}

539 view

4.0 stars