2009-03-27 3 views
6

पर क्लिक करें क्या माउस कर्सर के (x, y) निर्देशांक को डबलक्लिक ईवेंट में प्राप्त करने का कोई तरीका है?माउस की स्थिति/बटन प्राप्त करें डबलक्लिक घटना

जहां तक ​​मेरा बता सकते हैं, स्थिति वैश्विक से प्राप्त किया जा करने के लिए किया गया है:

 
Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y 

इसके अलावा, वहाँ प्राप्त करने के लिए कौन सा बटन डबल क्लिक करें उत्पादित एक तरीका है?

उत्तर

5

नियंत्रण। मॉउसपॉजिशन और कंट्रोल.माउसबटन जो आप खोज रहे हैं। स्क्रीन और नियंत्रण सापेक्ष निर्देशांक को नियंत्रित करने के लिए Control.PointToClient() और Control.PointToScreen() का उपयोग करें।

विवरण के लिए एमएसडीएन Control.MouseButtons Property, Control.MousePosition Property, Control.PointToClient Method, और Control.PointToScreen Method देखें।


अद्यतन

पेड़ों के लिए लकड़ी को देखने के लिए नहीं ...: डी Moose's जवाब देखें और घटना तर्क पर एक नजर है।

यह MSDN article सूचीबद्ध करता है कि कौन से माउस क्रियाएं नियंत्रण के आधार पर कौन सी घटनाओं को ट्रिगर करती हैं।

अद्यतन

मैं मूस के कलाकारों याद किया तो यह काम नहीं करेगा। आपको नियंत्रण नियंत्रण कक्ष से स्थिर नियंत्रण गुणों का उपयोग करना होगा। डबलक्लिक()। चूंकि बटन की जानकारी बिट फ़ील्ड के रूप में एन्कोड की जाती है, इसलिए आपको वांछित बटन का उपयोग करके निम्न परीक्षण करना होगा।

(Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left 
+0

मैं कैसे निर्धारित करूं कि Control.MouseButtons का उपयोग करके कौन सा बटन दबाया जाता है? इसमें तुलना करने के लिए स्थिरांक होते हैं, लेकिन इसके अलावा मुझे यह नहीं पता कि इसका उपयोग कैसे किया जाए। डबलक्लिक घटनाओं में इसके साथ तुलना करने के लिए एक चर नहीं है। – user79755

+0

डैनब्रुक, सिर के लिए धन्यवाद! मैंने आपकी जानकारी को प्रतिबिंबित करने के लिए अपनी पोस्ट संपादित की है। – Moose

+0

आपका उत्तर बेहतर है: कॉम्पैक्ट फ्रेमवर्क में कोई माउसDoubleClick ईवेंट नहीं है, लेकिन आपकी विधि ठीक है। – Soonts

9

नोट: के रूप में danbruc ने कहा, यह एक UserControl पर काम नहीं करेगा क्योंकि ई एक MouseEventArgs नहीं है। यह भी ध्यान रखें कि सभी नियंत्रण आपको डबलक्लिक ईवेंट भी नहीं देंगे - उदाहरण के लिए, एक बटन आपको केवल दो क्लिक ईवेंट भेजेगा।

private void Form1_DoubleClick(object sender, EventArgs e) 
    { 
     MouseEventArgs me = e as MouseEventArgs; 

     MouseButtons buttonPushed = me.Button; 
     int xPos = me.X; 
     int yPos = me.Y; 
    } 

.. एक्स, फार्म के लिए y रिश्तेदार हो जाता है

इसके अलावा MouseEventArgs में बाईं या दाईं बटन है।

+0

ओहह हाँ ... बस सबसे सरल चीज़ के बारे में भूल गया ...: डी –

+0

ओह्ह्ह नहीं ... मैं शून्य हो जाऊंगा क्योंकि घटना तर्क माउसइवेंट आर्ट्स नहीं हैं, इसलिए यह काम नहीं करता है। –

+0

@ डैनब्रुक - उह, मैंने बस यह सुनिश्चित करने की कोशिश की ... यह मेरे लिए काम करता है? शायद मैं बस अपनी जीभ सही पकड़ रहा हूँ! – Moose

13

उपयोग MouseDoubleClick बजाय डबलक्लिक घटना घटना। MouseDoubleClick सादे EventArgs की बजाय MouseEventArgs प्रदान करता है। यह "क्लिक" के बजाए "माउसक्लिक" के लिए भी जाता है ... और माउस के साथ सौदा करने वाली सभी अन्य घटनाएं।

MouseDoubleClick सुनिश्चित करता है कि माउस वास्तव में वहां है। डबलक्लिक कुछ और हो सकता है और माउस निर्देशांक उपयोगी नहीं हो सकते हैं - एमएसडीएन: "डबलक्लिक घटनाएं नियंत्रण की उच्च स्तर की घटनाओं की तार्किक रूप से उच्च-स्तरीय घटनाएं होती हैं। उन्हें शॉर्टकट कुंजी संयोजन जैसे अन्य उपयोगकर्ता कार्रवाइयों द्वारा उठाया जा सकता है।"