पर्यावरण: .NET फ्रेमवर्क 2.0, वी.एस. 2008हस्तांतरण की माउस माता पिता नियंत्रण करने के लिए घटनाओं
मैं कुछ नेट नियंत्रण (लेबल, पैनल) उस विशिष्ट माउस घटनाओं के माध्यम से पारित करेंगे की एक उपवर्ग बनाने के लिए कोशिश कर रहा हूँ (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
विधि अधिभावी में देख रहा हूँ, लेकिन उम्मीद है कि किसी ने मुझे एक क्लीनर समाधान दे सकते हैं।
क्या यह इस कोड के लिए सही त्रुटि संदेश है? एक माउसअप है दूसरा माउसडाउन है। –
यह मेरे लिए कुछ हद तक अस्पष्ट भी है जिसका अर्थ है "पास से"। –
त्रुटि संदेश गलत है, यह माउसडाउन होना चाहिए। मेरा मतलब है "पास से" का अर्थ यह है कि, जब कुछ घटनाएं नियंत्रण पर उठाई जाती हैं, तो मैं उन्हें नियंत्रण के माता-पिता पर प्रोग्रामेटिक रूप से बढ़ाता हूं। – GentlemanCoder