2011-06-14 11 views
19

के अंदर उपयोग किए गए DropDownButton पर डबल क्लिक से कैसे बच सकता हूं? अभी मैं दो या दो बार क्लिक करके DataGridView के भीतर ड्रॉप डाउन आइटम देख सकता हूं। पहली बार जब यह DropDownButton तीर पर क्लिक करता है तो यह सेल का चयन करता है और दूसरी बार, यह सूची दिखाता है। मैं एक ही क्लिक में इसे कैसे प्राप्त कर सकता हूं?एक क्लिक पर खुले ड्रॉपडाउन (डेटाग्रिड व्यू में) आइटम

+0

क्या आप – V4Vendetta

+0

@ V4Vendetta को प्राप्त करना चाहते हैं, इस बारे में विस्तार से बता सकते हैं, मैं विवरण अपडेट कर दूंगा। कृपया जांचें। – NewBie

+0

आप [इस समाधान को जांचना चाहते हैं।] (Http://stackoverflow.com/questions/34543940/datagridviewcomboboxcolumn-doesnt-open-the-dropdown-on-first-click/39757746#39757746) – TaW

उत्तर

15

आप प्रकार ComboBox

ComboBox ctl = e.Control as ComboBox; 
ctl.Enter -= new EventHandler(ctl_Enter); 
ctl.Enter += new EventHandler(ctl_Enter); 

और दर्ज घटना में के नियंत्रण के लिए ग्रिड के EditingControlShowing घटना के लिए सदस्यता लेने के द्वारा इस लक्ष्य को हासिल कर सकते हैं और वहाँ, संपत्ति

void ctl_Enter(object sender, EventArgs e) 
{ 
    (sender as ComboBox).DroppedDown = true; 
} 

DroppedDown के रूप में इंगित करता है का उपयोग करें नाम से पता चलता है कि ड्रॉपडाउन क्षेत्र दिखाया गया है या नहीं, इसलिए जब भी नियंत्रण दर्ज किया जाता है तो यह इसे सत्य पर सेट करेगा और बिना क्लिक की आवश्यकता के आइटम को प्रदर्शित करेगा।

+0

मुझे प्रदर्शित करने की आवश्यकता है डेटाग्रिड सेल पर क्लिक करने के लिए ड्रॉपिटैम्स। इससे कोई फर्क नहीं पड़ता। – NewBie

+12

क्या आप DataGridView EditMode = 'DataGridViewEditMode.EditOnEnter' – V4Vendetta

+0

सेट कर सकते हैं जो अकेले ही काम करता है। मैंने केवल EditMode = EditOnEnter प्रॉपर्टी सेट की है और अब यह काम कर रहा है। धन्यवाद। – NewBie

17

सेट DataGridViewEditOnEnter के EditMode संपत्ति: link

DataGridView.EditMode - हो जाता है या यह दर्शाता है कि कैसे एक सेल संपादित शुरू करने के लिए एक मूल्य निर्धारित करता है।

EditOnEnter - संपादन तब शुरू होता है जब सेल फोकस प्राप्त करता है।

6

"मेरे लिए काम किया गया डेटाग्रिड व्यू के डेटाग्रिड व्यू की सेट एडिटमोड प्रॉपर्टी" मेरे लिए काम किया, लेकिन मुझे एक और समस्या मिली: उपयोगकर्ता DEL कुंजी को चुनकर और दबाकर पंक्ति को हटा नहीं सकता है। तो, एक Google खोज ने मुझे ऐसा करने का एक और तरीका दिया। बस घटना CellEnter पकड़ने और देखें कि क्या सेल इस नमूना कोड की तरह विनियोजित कार्रवाई करने के लिए विनियोजित प्रकार है:

private void Form_OnLoad(object sender, EventArgs e){ 
    dgvArmazem.CellEnter += new DataGridViewCellEventHandler(dgvArmazem_CellEnter); 
} 

void dgvArmazem_CellEnter(object sender, DataGridViewCellEventArgs e) 
     { 
      DataGridView dg = (DataGridView)sender; 

      if (dg.CurrentCell.EditType == typeof(DataGridViewComboBoxEditingControl)) 
      { 
       SendKeys.Send("{F4}"); 
      } 
     } 

अब ComboBox नीचे तेजी से चला जाता है और उपयोगकर्ता अभी भी एक पंक्ति को चुनकर और दबाने डेल द्वारा एक पंक्ति को हटा कुंजी।

यही है।

+0

मुझे इस दिलचस्प व्यवहार का अनुभव है - पहला क्लिक ड्रॉपबॉक्स का विस्तार करता है, पहले आइटम का चयन करता है, और तुरंत ड्रॉपबॉक्स को बंद करता है। वास्तव में मेरा चयन करने के लिए मुझे फिर से क्लिक करने की आवश्यकता है। – valsidalv

संबंधित मुद्दे