तो 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() को प्रतिस्थापित करें।
जो लोग इस सवाल पाया के लिए पता करने के लिए पंक्तियों चयन बिल्कुल निष्क्रिय करने के लिए कैसे: सेट 'SelectionMode' संपत्ति' CellSelect' – Pavel