環境:.NET框架2.0,VS 2008直通鼠標事件於母公司控制
我試圖創造條件,通過一定的鼠標事件,某些.NET控件(標籤,面板)的一個子類( MouseDown
,MouseMove
,MouseUp
)到其父控制(或頂級表單)。我可以通過在標準控件的實例,例如創建這些事件的處理程序做到這一點:
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);
}
}
我可以在事件處理程序不能移動到控制的子類,因爲這提高了事件父控件的方法受到保護,我沒有父控件限定符:
無法通過
System.Windows.Forms.Control
類型的限定符訪問保護成員System.Windows.Forms.Control.OnMouseDown(System.Windows.Forms.MouseEventArgs)
;限定符必須是TheProject.NoCaptureLabel
(或從中派生)。
我期待到重載控件的WndProc
方法在我的子類,但希望有人可以給我一個清晰的解決方案。
這是該代碼的正確錯誤消息嗎?一個是MouseUp,另一個是MouseDown。 – 2009-11-19 16:35:12
我也不太清楚你是什麼意思的「通過」。 – 2009-11-19 16:36:35
錯誤消息不正確,應該是MouseDown。 我的意思是「通過」是,當控件上發生某些事件時,我通過編程方式在控件的父級上引發它們。 – GentlemanCoder 2009-11-23 14:11:47