سؤال

أواجه بعض المشاكل فيما يلي:

  • أريد الحصول على أول عمود مرئي ومجمد من مجموعة الأعمدة.

أعتقد أن هذا سيفعل ذلك:

DataGridViewColumnCollection dgv = myDataGridView.Columns;
dgv.GetFirstColumn(
     DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
  • هل من الممكن أيضًا عمل قناع نقطي للحصول على أول عمود مجمّد أو مرئي؟
هل كانت مفيدة؟

المحلول

التنفيذ هو AFAIK، "كل هذه" - يستخدم:

((this.State & elementState) == elementState);

وهو "كل".إذا أردت كتابة "أي من"، فربما تضيف طريقة مساعدة:(أضف "هذا" من قبل DataGridViewColumnCollection لجعلها طريقة تمديد C# 3.0 في)

    public static DataGridViewColumn GetFirstColumnWithAny(
        DataGridViewColumnCollection columns, // optional "this"
        DataGridViewElementStates states)
    {
        foreach (DataGridViewColumn column in columns)
        {
            if ((column.State & states) != 0) return column;
        }
        return null;
    }

أو مع لينك:

        return columns.Cast<DataGridViewColumn>()
            .FirstOrDefault(col => (col.State & states) != 0);

نصائح أخرى

حسنًا، تعمل الأقنعة النقطية عادة على النحو التالي:

| هو الانضمام إلى الأعلام. & يقوم بتصفية مجموعة فرعية من الأعلام من مجموعة أعلام ممثلة بقناع نقطي. ^ يقوم بقلب الأعلام بواسطة قناع (على الأقل في C/C++).

للحصول على أول عمود مجمد أو مرئي GetFirstColumn يجب التعامل مع الأقنعة النقطية بطريقة مختلفة (على سبيل المثال. GetFirstColumn يمكن أن تحصل على العمود الأول الذي يطابق أيًا من مجموعة الأعلام، ولكن هذا ليس هو الحال).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top