How do I get a UserControl dispatch a HelpRequest event when clicked in “HelpRequest-mode”?
I’ve tried to setup the simplest UserControl with just some colored background. But can’t get it to work.
UPDATED
namespace SeoTools.UI.Components
{
public partial class HelpRequestTest : UserControl
{
public HelpRequestTest()
{
InitializeComponent();
}
protected override void OnHelpRequested(HelpEventArgs hevent)
{
base.OnHelpRequested(hevent); //can't get it here either
}
}
}
namespace SeoTools.UI.Components
{
partial class HelpRequestTest
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#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()
{
this.SuspendLayout();
//
// HelpRequestTest
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ActiveCaption;
this.Name = "HelpRequestTest";
this.Size = new System.Drawing.Size(114, 94);
this.ResumeLayout(false);
}
#endregion
}
}
...
private void WebHelpRequested(object sender, HelpEventArgs hlpevent)
{
string tag = ((Control)sender).Tag.ToString();
if (!string.IsNullOrEmpty(tag))
{
try
{
ProcessStartInfo sInfo = new ProcessStartInfo(tag);
Process.Start(sInfo);
}
catch (Exception) { }
}
hlpevent.Handled = true;
}
...
//
// helpRequestTest1
//
this.helpRequestTest1.BackColor = System.Drawing.SystemColors.ActiveCaption;
this.helpRequestTest1.Location = new System.Drawing.Point(91, 3);
this.helpRequestTest1.Name = "helpRequestTest1";
this.helpRequestTest1.Size = new System.Drawing.Size(114, 94);
this.helpRequestTest1.TabIndex = 1;
this.helpRequestTest1.Tag = "http://offerta.se";
this.helpRequestTest1.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.WebHelpRequested);
In it’s simplest form:
This works on my machine “as is”. The only way I made it “stop” working was if I added a TextBox control to the UserControl, and handled it’s HelpRequest event.
So my only suggestion at this point is to look at the child controls in your UserControl, and see if they are interfering with the UserControl’s ability to call the event.