Frage

Ich habe einige Probleme mit dem folgenden:

  • Ich mag die erste sichtbare und gefrorene Spalte einer Spalte Sammlung erhalten.

Ich denke, das wird es tun:

DataGridViewColumnCollection dgv = myDataGridView.Columns;
dgv.GetFirstColumn(
     DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
  • Ist es auch möglich, eine Bitmaske zu machen, die erste gefrorene oder sichtbare Spalte zu bekommen?
War es hilfreich?

Lösung

Die Implementierung ist, AFAIK, "alle diese" - es verwendet:

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

Welche „alle“ ist. Wenn Sie ein „irgendetwas von“ schreiben wollte, vielleicht eine Hilfsmethode hinzu: (Fügen Sie das "this" vor DataGridViewColumnCollection machen ihm zu einer C # 3.0-Erweiterungsmethode in)

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

oder mit LINQ:

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

Andere Tipps

Nun, Bitmasken in der Regel wie folgt funktionieren:

| beitritt Fahnen auf. & filtert Subset von Flags aus einem Flag gesetzt durch eine Bitmaske dargestellt. ^ wird Fahnen durch eine Maske (zumindest in C / C ++).

Spiegeln

Um die erste gefroren oder sichtbare Spalte GetFirstColumn bekommen müssen Bitmasken andere Art und Weise handhaben (z GetFirstColumn könnte die erste Spalte erhalten, die eine der Fahnen übereinstimmt gesetzt, aber dies ist nicht der Fall ist).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top