विकल्प 1: पूरी तरह से डबल क्लिक करें घटना को अक्षम करें।
एक ग्राहक नियंत्रण
class MyTreeView : TreeView
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0203)
{
m.Result = IntPtr.Zero;
}
else
{
base.WndProc(ref m);
}
}
}
और अपने डिजाइनर फ़ाइल (form.Designer.cs), जहां नियंत्रण बनाया गया था देखने में बनाएँ, और अपने नए नियंत्रण के साथ TreeView निर्माता करने के लिए कॉल की जगह।
this.treeView1 = new MyTreeView();
विकल्प 2: दो सिंगल क्लिक घटनाओं
class MyTreeView : TreeView
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0203)
{
m.Msg = 0x0201;
}
base.WndProc(ref m);
}
}
निजी तौर पर मुझे लगता है कि विकल्प 2 अधिक सहज ज्ञान युक्त है के रूप में एक डबल क्लिक करें घटना उपचार करें। जब उपयोगकर्ता दो बार चेक बॉक्स पर क्लिक करता है, तो चेकबॉक्स चेक नहीं किया जाता है।
यह पूरी तरह से काम करता है। आपको बहुत धन्यवाद। –
मुझे पता था कि मैंने जो जवाब दिया उससे बेहतर तरीका होना चाहिए था, लेकिन इसे समझ नहीं पाया। +1 – TaRDy
मुझे यकीन नहीं है कि यह काम करता है। बग वास्तव में सभी डबल क्लिक घटनाओं को छिपाने लगता है। यदि आप चेकबॉक्स पर डबल क्लिक करते हैं, तो घटनाओं पर दो बार क्लिक न करें। यदि आप फिर कहीं भी कहीं भी क्लिक करते हैं, * फिर * डबल क्लिक इवेंट आग लगती है, लेकिन क्योंकि उन्होंने इतनी देर से निकाल दिया है, वे अपने ईवेंट में गलत जानकारी के साथ समाप्त होते हैं। –