سؤال

أريد أن تعطيل اختيار بعض الصفوف في datagridview.

يجب أن يكون من الممكن إزالة الخاصية حدد واحد أو أكثر datagridview الصفوف في datagridview هو مبين في winform.الهدف هو أن المستخدم لا يمكن تحديد بعض الصفوف.(اعتمادا على الشرط)

Thankx,

هل كانت مفيدة؟

المحلول

إذا SelectionMode هو FullRowSelect, ثم سوف تحتاج إلى تجاوز SetSelectedRowCore أن DataGridView و لا ندعو قاعدة SetSelectedRowCore للصفوف كنت لا تريد تحديده.

إذا SelectionMode لا FullRowSelect, سوف تحتاج إلى إضافة إلى ذلك تجاوز SetSelectedCellCore (وليس استدعاء قاعدة 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 ، فتح الكراك مصمم الخاص بك.cs ذات الصلة النموذج وتغيير الإعلان الخاص بك DataGridView سبيل المثال استخدام هذه الفئة الجديدة بدلا من DataGridView و أيضا استبدال هذه.blahblahblah = النظام الجديد.يقوم نظام ويندوز.أشكال.DataGridView() للإشارة إلى فئة جديدة.

نصائح أخرى

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top