Medio Ambiente: .NET Framework 2.0, VS 2008.de Transmisión a través de eventos de ratón para el control de los padres
Estoy intentando crear una subclase de ciertos controles .NET (etiqueta, el panel) que pasarán a través de ciertos eventos de ratón (MouseDown
, MouseMove
, MouseUp
) a su control principal (o alternativamente al formulario de nivel superior). Puedo hacer esto mediante la creación de controladores de estos eventos en los casos de los controles estándar, por ejemplo:
public class TheForm : Form
{
private Label theLabel;
private void InitializeComponent()
{
theLabel = new Label();
theLabel.MouseDown += new MouseEventHandler(theLabel_MouseDown);
}
private void theLabel_MouseDown(object sender, MouseEventArgs e)
{
int xTrans = e.X + this.Location.X;
int yTrans = e.Y + this.Location.Y;
MouseEventArgs eTrans = new MouseEventArgs(e.Button, e.Clicks, xTrans, yTrans, e.Delta);
this.OnMouseDown(eTrans);
}
}
no puedo mover el controlador de eventos en una subclase del control, debido a que los métodos que elevan los eventos en el control de los padres están protegidos y no tener un partido de clasificación para el control de los padres:
no se puede acceder miembro protegido
System.Windows.Forms.Control.OnMouseDown(System.Windows.Forms.MouseEventArgs)
a través de un calificador de tipoSystem.Windows.Forms.Control
; el calificador debe ser del tipoTheProject.NoCaptureLabel
(o derivado de él).
Estoy buscando en la sustitución del método del control WndProc
en mis sub-clase, pero espero que alguien me puede dar una solución más limpia.
¿Es ese el mensaje de error correcto para este código? Uno es MouseUp y el otro es MouseDown. –
Tampoco me queda claro a qué te refieres con "pasar". –
El mensaje de error es incorrecto, debería ser MouseDown. Lo que quiero decir con "paso directo" es que, cuando se generan ciertos eventos en un control, los crío de forma programática en el elemento primario del control. – GentlemanCoder