2012-11-19 6 views
6

मेरे पास दो DataGridView ईवेंट हैं। मुझे एक समस्या है, जब मैं एक सेल पर डबल क्लिक करता हूं, दोनों घटनाओं i.e., cell click और cell double click ईवेंट लागू किए जा रहे हैं। कृपया मुझे जवाब दें कि यह क्यों हुआ और समाधान क्या है।डेटा ग्रिड व्यू में सेल डबल क्लिक इवेंट

धन्यवाद

+1

मुझे नहीं पता कि इसका उपयोग कैसे करें, लेकिन मुझे लगता है कि इसे 'हुक' और 'अनहूक' का उपयोग करके हल किया जा सकता है। या फिर 'टाइमर'। –

+0

कृपया इस लिंक को देखें। http://stackoverflow.com/questions/4252735/double-click-to-windows-form-in-c-sharp आशा है कि इस हेप्लस :) –

उत्तर

1

जाहिर है वहाँ सिर्फ DataGridView की में गुण निर्धारित करके कि करने के लिए कोई रास्ता नहीं है। तो अगर आप गिनती करने के लिए टाइमर का उपयोग कर सकते अगर कोई डबल क्लिक करें था, नहीं तो बस जो भी आप yous सिंगल क्लिक ईवेंट हैंडलर में क्या करते हैं, कोड की जाँच करें:

System.Windows.Forms.Timer t; 
     public Form1() 
     { 
      InitializeComponent(); 

      t = new System.Windows.Forms.Timer(); 
      t.Interval = SystemInformation.DoubleClickTime - 1; 
      t.Tick += new EventHandler(t_Tick); 
     } 

     void t_Tick(object sender, EventArgs e) 
     { 
      t.Stop(); 
      DataGridViewCellEventArgs dgvcea = (DataGridViewCellEventArgs)t.Tag; 
      MessageBox.Show("Single"); 
      //do whatever you do in single click 
     } 

     private void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e) 
     { 
      t.Tag = e; 
      t.Start(); 
     } 

     private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
     { 
      t.Stop(); 
      MessageBox.Show("Double"); 
      //do whatever you do in double click 
     } 
+0

धन्यवाद का प्रयास करूंगा, लेकिन जब सेल डबल क्लिक पर हमला किया जाता है तो सेल क्लिक इवेंट को रोकना बंद करना चाहते हैं – AhmedShawky

+0

@ user1835772 ठीक है, लेकिन मुझे नहीं लगता कि ऐसा करने का कोई तरीका है। यह एक समस्या क्यों होगी? यह ठीक वैसे ही काम करता है जैसा आप चाहते हैं। या तुमने कोशिश की? –

+0

हां, लेकिन मुझे सेल पर क्लिक किया गया – AhmedShawky

1

विंडोज़ समस्या के साथ। जहां तक ​​मुझे पता है कि उन्होंने इसे संभालने के लिए कुछ भी विशेष नहीं जोड़ा है।

आप इस संभाल कर सकते हैं -

  • क) सिर्फ एक क्लिक के कुछ आप एक डबल क्लिक करने से पहले होने की चयन की तरह चाहते हैं बनाते हैं।
  • बी) यदि यह कोई विकल्प नहीं है, तो क्लिक ईवेंट पर, टाइमर शुरू करें। टाइमर टिक पर, एकल क्लिक कार्रवाई करें। यदि डबल-क्लिक ईवेंट पहले होता है, तो टाइमर को मारें, और डबल क्लिक एक्शन करें।

आपके द्वारा समय निर्धारित करने की मात्रा सिस्टम के डबल-क्लिक समय (जिसे उपयोगकर्ता नियंत्रण कक्ष में निर्दिष्ट कर सकते हैं) के बराबर होना चाहिए। यह System.Windows.Forms.SystemInformation.DoubleClickTime से उपलब्ध है।

+0

बहुत धन्यवाद, मैं आपके उत्तर के लिए – AhmedShawky

1

आप ग्रिड के RowHeaderMouseClick घटना का उपयोग कर सकते

private void dgv_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 

    }