Csharp/C Sharp/GUI Windows Form/Help System

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Help icon

<source lang="csharp"> /* 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.ruponentModel; 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.ruponentModel.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.ruponents = new System.ruponentModel.Container();
     this.TextBox2 = new System.Windows.Forms.TextBox();
     this.TextBox1 = new System.Windows.Forms.TextBox();
     this.helpIconProvider1 = new ExtenderProviderControls.HelpIconProvider(this.ruponents);
     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.ruponentModel; using System.Collections; using System.Drawing; namespace ExtenderProviderControls { [ProvideProperty("HelpID", typeof(string))] public class HelpIconProvider : Component, IExtenderProvider {

 private System.ruponentModel.Container components = null;
 public HelpIconProvider(System.ruponentModel.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());
   }

} }


      </source>

<A href="http://www.nfex.ru/Code/CSharpDownload/HelpIconProviderHost.zip">HelpIconProviderHost.zip( 72 k)</a>


Help Test

<source lang="csharp"> /* 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.ruponentModel; using System.Windows.Forms; using System.Data; namespace HelpTest {

 /// <summary>
 /// Summary description for HelpTest.
 /// </summary>
 public class HelpTest : System.Windows.Forms.Form
 {
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ruponentModel.Container components = null;
   public HelpTest()
   {
     //
     // 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()
   {
     // 
     // HelpTest
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(528, 434);
     this.IsMdiContainer = true;
     this.Name = "HelpTest";
     this.Text = "HelpTest";
     this.Load += new System.EventHandler(this.HelpTest_Load);
   }
   #endregion
   /// <summary>
   /// The main entry point for the application.
   /// </summary>
   [STAThread]
   static void Main() 
   {
     Application.Run(new HelpTest());
   }
   private void HelpTest_Load(object sender, System.EventArgs e)
   {
     FormBased frm1 = new FormBased();
     FrameBased frm2 = new FrameBased();
     ControlBased frm3 = new ControlBased();
     
     frm1.MdiParent = this;
     frm2.MdiParent = this;
     frm3.MdiParent = this;
     
     frm1.Show();
     frm2.Show();
     frm3.Show();
   }
 }

}

//=============================================================== //=============================================================== using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; namespace HelpTest {

 /// <summary>
 /// Summary description for ControlBased.
 /// </summary>
 public class ControlBased : System.Windows.Forms.Form
 {
   internal System.Windows.Forms.TextBox TextBox1;
   internal System.Windows.Forms.ListBox ListBox1;
   internal System.Windows.Forms.Label label1;
   internal System.Windows.Forms.HelpProvider HelpProvider1;
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ruponentModel.Container components = null;
   public ControlBased()
   {
     //
     // 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.TextBox1 = new System.Windows.Forms.TextBox();
     this.ListBox1 = new System.Windows.Forms.ListBox();
     this.label1 = new System.Windows.Forms.Label();
     this.HelpProvider1 = new System.Windows.Forms.HelpProvider();
     this.SuspendLayout();
     // 
     // TextBox1
     // 
     this.TextBox1.Location = new System.Drawing.Point(30, 135);
     this.TextBox1.Name = "TextBox1";
     this.TextBox1.Size = new System.Drawing.Size(208, 20);
     this.TextBox1.TabIndex = 11;
     this.TextBox1.Text = "TextBox1";
     // 
     // ListBox1
     // 
     this.ListBox1.Location = new System.Drawing.Point(26, 19);
     this.ListBox1.Name = "ListBox1";
     this.ListBox1.Size = new System.Drawing.Size(112, 95);
     this.ListBox1.TabIndex = 10;
     // 
     // label1
     // 
     this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
     this.label1.Location = new System.Drawing.Point(30, 179);
     this.label1.Name = "label1";
     this.label1.Size = new System.Drawing.Size(236, 68);
     this.label1.TabIndex = 9;
     this.label1.Text = "Select a control and press F1 here for a control-based help topic.";
     // 
     // ControlBased
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 266);
     this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                     this.TextBox1,
                                     this.ListBox1,
                                     this.label1});
     this.Name = "ControlBased";
     this.Text = "ControlBased";
     this.Load += new System.EventHandler(this.ControlBased_Load);
     this.ResumeLayout(false);
   }
   #endregion
   private void ControlBased_Load(object sender, System.EventArgs e)
   {
     HelpProvider1.HelpNamespace = "sample.chm";
     HelpProvider1.SetHelpKeyword(TextBox1, "1007.html");
     HelpProvider1.SetHelpNavigator(TextBox1, HelpNavigator.Topic);
     HelpProvider1.SetHelpKeyword(ListBox1, "1006.html");
     HelpProvider1.SetHelpNavigator(ListBox1, HelpNavigator.Topic);
   }
 }

}


      </source>

<A href="http://www.nfex.ru/Code/CSharpDownload/HelpTest.zip">HelpTest.zip( 58 k)</a>