Csharp/C Sharp/GUI Windows Form/Help System — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 14:32, 26 мая 2010
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>