2011-07-05 14 views
5

क्या यह संभव है, बॉक्स से बाहर, केवल कीबोर्ड का उपयोग करके .NET DataGridView कॉलम को सॉर्ट करने के लिए?क्या केवल कीबोर्ड का उपयोग कर .NET DataGridView कॉलम को सॉर्ट करना संभव है?

मुझे लगता है कि एक चयनमोड संपत्ति है, लेकिन इसे बदलने से मुझे केवल शिफ्ट + स्पेस, एक संपूर्ण पंक्ति या कॉलम का उपयोग करके चयन करने की अनुमति मिलती है, लेकिन इसका प्रभाव माउस के साथ हेडर पर क्लिक करने के समान नहीं होता है एक प्रकार।

कारण मैं पूछता हूं क्योंकि मैं अभिगम्यता के मुद्दों पर काम कर रहा हूं और माउस पर भरोसा करना चाहता हूं।

किसी भी सहायता के लिए धन्यवाद।

+1

"बॉक्स के बाहर" से आपका मतलब है "कोई कोड आवश्यक नहीं है"? –

+0

हां, अस्पष्टता के लिए खेद है, मैं उम्मीद कर रहा था कि कोड के बिना ऐसा करने का कोई तरीका है जिसे मैं नहीं जानता था। – Eric

+0

मुझे नहीं लगता कि वहां है। अच्छी खबर यह है कि इसे बहुत अधिक कोड नहीं लेना चाहिए। =) – ZeroDivide

उत्तर

4

सबसे पहले आपको जो करना होगा, उसे KeyPreview संपत्ति True पर अपने फॉर्म गुणों में सेट करें।

public class Form1{ 
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); 

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     //sort column 0 descending on a 'D' press 
     if (e.KeyCode == Keys.D) 
      dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending); 

     //sort column 0 Ascending on a 'U' press 
     if (e.KeyCode == Keys.U) 
      dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending); 
    } 
} 
1

हो सकता है कि मुझे कुछ याद आ रहा है, लेकिन जिस क्षण आप वांछित कुंजी संयोजन प्राप्त करते हैं, उस क्रमबद्ध सॉर्ट विधि को कॉल करें।

0

मुझे नहीं पता कि कॉलम हेडर कभी फोकस मिलती है:

तब घटनाओं में आप फिर इस तरह की कुछ कोड कुछ जोड़ने KeyDown() घटना

के लिए एक ईवेंट हैंडलर जोड़ने की जरूरत (ctrl + tab/etc?), लेकिन अगर वे कर सकते हैं और आपके कीबोर्ड में एक संदर्भ मेनू बटन है, तो काम कर सकता है। लेकिन मुझे नहीं लगता कि हेडर कभी कीबोर्ड फोकस प्राप्त करते हैं।

अन्यथा, मानक पहुंच क्षमता सुविधाओं का उपयोग करके इसे करने के तरीके हो सकते हैं?

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