В простейшем виде:
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;
}
}
Это работает на моей машине "как есть". Единственный способ заставить его «перестать» работать - это добавить элемент управления TextBox в UserControl и обработать его событие HelpRequest.
public partial class UserControl1 : UserControl {
public UserControl1() {
InitializeComponent();
}
private void textBox1_HelpRequested(object sender, HelpEventArgs hlpevent) {
//This prevents the UserControl from firing it's help request:
}
}
Таким образом, мое единственное предложение на данный момент - посмотреть на дочерние элементы управления в вашем UserControl и посмотреть, не влияют ли они на способность UserControl вызывать событие.