Environment: .NET Framework 2.0, VS 2008, C#
I am trying to create a subclass of certain .NET controls (label, panel) that will pass through certain mouse events (MouseDown, MouseMove, MouseUp) to its parent control (or alternatively to the toplevel form). I can do this by creating handlers for these events in instances of the standard controls, e.g.
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);
}
}
I cannot move the event handler into a subclass of the control, because the methods that raise the events in the parent control are protected and I don't have a qualifier for the parent control:
Error 1 Cannot access protected member 'System.Windows.Forms.Control.OnMouseDown(System.Windows.Forms.MouseEventArgs)' via a qualifier of type 'System.Windows.Forms.Control'; the qualifier must be of type 'theProject.NoCaptureLabel' (or derived from it) C:\Documents and Settings\Me\My Documents\Visual Studio 2008\Projects\theProject\NoCaptureControls.cs 30 22 theProject
I am looking into overriding the WndProc() method of the control in my subclass but hoping someone can give me a cleaner solution. TIA