Domanda

sto avendo qualche problema con il seguente:

  • Voglio ottenere la prima colonna visibile e congelate di una collezione colonna.

Credo che questo lo farà:

DataGridViewColumnCollection dgv = myDataGridView.Columns;
dgv.GetFirstColumn(
     DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
  • E 'anche possibile fare una maschera di bit per ottenere la prima colonna congelati o visibile?
È stato utile?

Soluzione

L'implementazione è, per quanto ne so, "tutte queste" - che utilizza:

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

che è "tutto". Se si voleva scrivere un "qualsiasi", forse aggiungere un metodo di supporto: (Aggiungere il "questo" prima DataGridViewColumnCollection per renderlo un metodo di C # 3.0 estensione a)

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

O con LINQ:

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

Altri suggerimenti

Bene, maschere di bit di solito lavorano in questo modo:

| sta unendo le bandiere in su. & sta filtrando sottoinsieme delle bandiere di un insieme bandiera rappresentato da una maschera di bit. ^ sta lanciando bandiere da una maschera (almeno in C / C ++).

Per ottenere il primo GetFirstColumn congelati o visibile colonna deve gestire bitmasks modo diverso (ad esempio GetFirstColumn potrebbe ottenere la prima colonna che corrisponde a uno dei flag impostati, ma non è questo il caso).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top