Yo he probado y funciona perfectamente. Lo único raro es como insertas el control de usuario dentro del formulario, porque en tu código instancias un control de usuario pero no lo añades al formulario.
Si lo haces con el diseñador de windows Forms, tendrás una instancia al control de usuario, que será sobre el que tengas que poner el evento.
Te dejo mi código:
Código C#:
Ver originalusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PruebaControles
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
controlDeUsuario1.Control += new ControlDeUsuario.HandlerControl(MetodoDelEvento);
}
void MetodoDelEvento(object sender, EventArgs e)
{
textBox1.Text = "SI";
}
}
}
Código C#:
Ver originalnamespace PruebaControles
{
partial class Form1
{
/// <summary>
/// Variable del diseñador requerida.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Limpiar los recursos que se estén utilizando.
/// </summary>
/// <param name="disposing">true si los recursos administrados se deben eliminar; false en caso contrario, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Código generado por el Diseñador de Windows Forms
/// <summary>
/// Método necesario para admitir el Diseñador. No se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
this.controlDeUsuario1 = new PruebaControles.ControlDeUsuario();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// controlDeUsuario1
//
this.controlDeUsuario1.Location = new System.Drawing.Point(58, 52);
this.controlDeUsuario1.Name = "controlDeUsuario1";
this.controlDeUsuario1.Size = new System.Drawing.Size(150, 150);
this.controlDeUsuario1.TabIndex = 0;
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(97, 83);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 20);
this.textBox1.TabIndex = 1;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.controlDeUsuario1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private ControlDeUsuario controlDeUsuario1;
private System.Windows.Forms.TextBox textBox1;
}
}
Código C#:
Ver originalusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PruebaControles
{
public partial class ControlDeUsuario : UserControl
{
public delegate void HandlerControl(object sender, EventArgs e);
public event HandlerControl Control;
public ControlDeUsuario()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (Control != null)
Control(this, e);
}
}
}
Código C#:
Ver originalnamespace PruebaControles
{
partial class ControlDeUsuario
{
/// <summary>
/// Variable del diseñador requerida.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Limpiar los recursos que se estén utilizando.
/// </summary>
/// <param name="disposing">true si los recursos administrados se deben eliminar; false en caso contrario, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Código generado por el Diseñador de componentes
/// <summary>
/// Método necesario para admitir el Diseñador. No se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(40, 96);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// ControlDeUsuario
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.button1);
this.Name = "ControlDeUsuario";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
}
}