How to get the UserControl dispatcher HelpRequest event

How do I get the UserControl manager of the HelpRequest event when I click in "HelpRequest-mode"?

I tried to set up the simplest UserControl with only some color background. But can't make it 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); 
+4
source share
1 answer

It has the simplest form:

 public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } } public partial class Form1 : Form { public Form1() { InitializeComponent(); userControl11.Tag = "http://www.stackoverflow.com"; userControl11.HelpRequested += userControl11_HelpRequested; } private void userControl11_HelpRequested(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; } } 

It works on my machine as is. The only way I worked "stop" was that I added a TextBox control to UserControl and handled its HelpRequest event.

 public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } private void textBox1_HelpRequested(object sender, HelpEventArgs hlpevent) { //This prevents the UserControl from firing it help request: } } 

So, my only suggestion at this point is to look at the child controls in UserControl and see if they interfere with the UserControl functions to trigger the event.

+7
source

Source: https://habr.com/ru/post/1382164/


All Articles