Csharp/C Sharp/GUI Windows Form/Help System — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:32, 26 мая 2010
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.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());
}
}
}
<A href="http://www.nfex.ru/Code/CSharpDownload/HelpIconProviderHost.zip">HelpIconProviderHost.zip( 72 k)</a>
Help Test
/*
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);
}
}
}
<A href="http://www.nfex.ru/Code/CSharpDownload/HelpTest.zip">HelpTest.zip( 58 k)</a>