मैं पिक्सल गिनती करता है, तो प्रपत्र वास्तव में है सोच रहा था खींचा गया, लेकिन एक बेहतर तरीका होना चाहिए।
नहीं, यह ठीक है कि आपको यह कैसे करना है।
यह केवल एक सॉफ्टवेयर सीमा नहीं है; यह भी एक व्यावहारिक है। यदि आप किसी उपयोगकर्ता के परिप्रेक्ष्य से समस्या के बारे में सोचते हैं, तो आप तुरंत समस्या और समाधान को देखेंगे। अपने आप से पूछें, क्लिक और ड्रैग के बीच क्या अंतर है?
उनमें से दोनों ऑब्जेक्ट पर नीचे जाने वाले माउस बटन से शुरू होते हैं, लेकिन उनमें से एक माउस बटन के साथ उसी स्थिति में बैक अप लेने के साथ समाप्त होता है और दूसरा माउस बटन के साथ समाप्त होता है एक पूरी तरह से अलग स्थिति।
के बाद से समय मशीनों अभी तक सिद्ध नहीं किया गया है, यदि आप पहले से यह जानने का कोई तरीका नहीं है।
तो हाँ, आपको किसी प्रकार की दूरी सीमा को बनाए रखने की आवश्यकता है, और अगर ऑब्जेक्ट पर डाउन होने पर पॉइंटर उस दूरी सीमा के बाहर चलता है, तो आप इसे ड्रैग मानते हैं। अन्यथा, आप इसे एक क्लिक मानते हैं।
वह दूरी दहलीज 0 नहीं होनी चाहिए। ड्रैग शुरू करने के लिए उपयोगकर्ता को पूरी तरह से पकड़ने की आवश्यकता नहीं होनी चाहिए। बहुत सारे उपयोगकर्ता सब-पैरा मूसर्स हैं। क्लिक करने का प्रयास करते समय उन्हें थोड़ा सा झटका लगने की संभावना है। यदि दहलीज 0 है, तो वे क्लिक करने का प्रयास करते समय बहुत अनजान ड्रैगिंग कर देंगे।
बेशक
, आप वास्तव में इस बारे में कोई चिंता या खुद खींचें सीमा की गणना करने की जरूरत नहीं है।इसके बजाय, GetSystemMetrics
फ़ंक्शन को कॉल और या तो SM_CXDRAG
या SM_CYDRAG
निर्दिष्ट करने के द्वारा, विंडोज डिफ़ॉल्ट मान का उपयोग प्राप्य। (ये WinForms ढांचे द्वारा कहीं से अवगत कराया जा सकता है, लेकिन मैं ऐसा नहीं सोचता। यह सिर्फ पी के रूप में आसान है/उन्हें अपने आह्वान।)
const int SM_CXDRAG = 68;
const int SM_CYDRAG = 69;
[DllImport("user32.dll")]
static extern int GetSystemMetrics(int index);
Point GetDragThreshold()
{
return new Point(GetSystemMetrics(SM_CXDRAG), GetSystemMetrics(SM_CYDRAG));
}
"पिक्सल गिनती" काफी आम है, क्योंकि ज्यादातर मामलों में आप वास्तव में ** नहीं चाहिए ** खींचें बंद आग जब 'आंदोलन दूरी' उदाहरण के लिए, 7..15 पिक्सेल से छोटा है। यहां तक कि विंडोज़ डेस्कटॉप में भी कुछ पिक्सेल थ्रेसहोल्ड है। – quetzalcoatl
'क्लिक करें' का उपयोग न करें, और इसके बजाए 'माउसअप' का उपयोग करें? – Neolisk
मैंने एक डेमो बनाया और मुझे यह व्यवहार नहीं मिल रहा है। माउसडाउन क्लिक के बाद पहुंच गया है। क्या आप कुछ कोड पोस्ट कर सकते हैं? –