2008-09-16 9 views
12

मैं डेटाग्रिडव्यू में कुछ पंक्तियों के चयन को अक्षम करना चाहता हूं।डेटाग्रिडव्यू में पंक्तियों का चयन अक्षम करें

एक Winform में दिखाए गए डेटाग्रिडव्यू में एक या अधिक डेटाग्रिडव्यू पंक्तियों के लिए चयन संपत्ति को निकालना संभव है। लक्ष्य यह है कि उपयोगकर्ता कुछ पंक्तियों का चयन नहीं कर सकता है। (एक शर्त के आधार पर)

thankx,

+0

जो लोग इस सवाल पाया के लिए पता करने के लिए पंक्तियों चयन बिल्कुल निष्क्रिय करने के लिए कैसे: सेट 'SelectionMode' संपत्ति' CellSelect' – Pavel

उत्तर

16

तो SelectionMode FullRowSelect है, तो आप उस DataGridView के लिए SetSelectedRowCore ओवरराइड करने के लिए और पंक्तियों आपके द्वारा चयनित नहीं चाहते के लिए आधार SetSelectedRowCore फोन की आवश्यकता होगी, नहीं।

यदि चयनमोड FullRowSelect नहीं है, तो आप अतिरिक्त रूप से SetSelectedCellCore को ओवरराइड करना चाहते हैं (और उन पंक्तियों के लिए बेस सेट सिलेक्टेड सेलकोर को कॉल नहीं करना चाहते हैं), क्योंकि SetSelectedRowCore केवल तभी होगा जब आप पंक्ति शीर्षलेख पर क्लिक करेंगे और नहीं व्यक्तिगत सेल

यहाँ एक उदाहरण है:

public class MyDataGridView : DataGridView 
{ 
    protected override void SetSelectedRowCore(int rowIndex, bool selected) 
    { 
     if (selected && WantRowSelection(rowIndex)) 
     { 
      base.SetSelectedRowCore(rowIndex, selected); 
     } 
    } 

    protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected) 
    { 
     if (selected && WantRowSelection(rowIndex)) 
     { 
      base.SetSelectedRowCore(rowIndex, selected); 
      } 
    } 

    bool WantRowSelection(int rowIndex) 
    { 
     //return true if you want the row to be selectable, false otherwise 
    } 
} 

आप WinForms का उपयोग कर रहे हैं, तो दरार प्रासंगिक फार्म के लिए अपने designer.cs खोलें, और DataGridView के बजाय इस नए वर्ग का उपयोग करने के अपने DataGridView उदाहरण की घोषणा बदलने के लिए, और यह भी नई कक्षा को इंगित करने के लिए this.blahblahblah = new System.Windows.Forms.DataGridView() को प्रतिस्थापित करें।

+0

एक समाधान है कि काम करता है ... लेकिन यह मुझे लगता है कि के लिए हम एक बनाने की जरूरत कक्षा जो डेटाग्रिडव्यू नियंत्रण को बढ़ाती है ... क्या मैं सही हूं ... क्या हमारे पास कोई समाधान नहीं है जो वर्तमान डेटाग्रिडव्यू कक्षा –

+0

पर काम करता है, मैं पूछना चाहता हूं कि पंक्ति सेट होने पर भी कुछ कॉलम को हाइलाइट करने की सुविधा है या नहीं चयनित के रूप में। – Nap

+0

@ स्जेवी, क्या आप आगे समझा सकते हैं? मुझे अभी भी इस जवाब की आवश्यकता है, साथ ही साथ। – Sev09

-1
Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged 
     dgvSomeDataGridView.ClearSelection() 
End Sub