मुझे एक ही क्लिक और दोनों प्रतिक्रियाओं के साथ एक WPF अनुप्रयोग में बटन के डबल क्लिक को संभालना होगा। दुर्भाग्यवश, डबलक्लिक पर, डब्ल्यूपीएफ दो क्लिक इवेंट और डबल क्लिक इवेंट चलाता है, इसलिए इस स्थिति को संभालना मुश्किल है।डब्ल्यूपीएफ: बटन एकल क्लिक + डबल क्लिक इश्यू
यह टाइमर का उपयोग करके इसे हल करने की कोशिश की लेकिन सफलता के बिना ... मुझे उम्मीद है कि आप मेरी मदद कर सकते हैं।
कोड देखते हैं:
private void delayedBtnClick(object statInfo)
{
if (doubleClickTimer != null)
doubleClickTimer.Dispose();
doubleClickTimer = null;
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new VoidDelegate(delegate()
{
// ... DO THE SINGLE CLICK ACTION
}));
}
private void btn_Click(object sender, RoutedEventArgs e)
{
if (doubleClickTimer == null)
doubleClickTimer = new Timer(delayedBtnClick, null, System.Windows.Forms.SystemInformation.DoubleClickTime, Timeout.Infinite);
}
}
}
private void btnNext_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (doubleClickTimer != null)
doubleClickTimer.Change(Timeout.Infinite, Timeout.Infinite); // disable it - I've tried it with and without this line
doubleClickTimer.Dispose();
doubleClickTimer = null;
//.... DO THE DOUBLE CLICK ACTION
}
समस्या यह है कि 'सिंगल क्लिक कार्रवाई' DoubleClick पर 'डबल क्लिक कार्रवाई' के बाद कहा जाता है। यह अजीब मैं doubleClickTimer
सेट कि डबल क्लिक पर शून्य पर है, लेकिन delayedBtnClick
में यह सच है: हे
मैं पहले से ही लंबे समय, एक bool झंडा और लॉक का उपयोग करने के लिए कोशिश की है ...
आप किसी भी है विचार?
बेस्ट!
बहुत बहुत धन्यवाद! ई। हैंडल = सच चाल थी! तेज प्रतिक्रिया के लिए फिर से धन्यवाद :) – Hunsoul
यदि आप डिस्पैचर टिमर के लिए उस कन्स्ट्रक्टर का उपयोग करते हैं तो टाइमर तुरंत शुरू होता है जो एक नकली एकल क्लिक ईवेंट का कारण बनता है। इसके अलावा पृष्ठभूमि और वर्तमान डिफ़ॉल्ट मान हैं इसलिए चीजों को थोड़ा उलझन में रखें (सोचा था कि वहां कुछ वूडू चल रहा है!)। हालांकि बहुत उपयोगी - चीयर्स! –
मुझे कोड में DoubleClickTime का उपयोग नहीं दिख रहा है। इसके बजाय मैं एक हार्ड कोडित देरी देखता हूं। क्या यह सामान्य है? – SandRock