Domanda

Ho inserito un UltraGrid su un controllo utente di WinForms. Ho modificato alcune impostazioni in modo da poter utilizzare la griglia come tabella di selezione multi-riga di sola lettura. Ma c'è un problema: per impostazione predefinita la prima riga sembra essere selezionata.

Ma la proprietà Selected.Rows è vuota e anche la proprietà ActiveRow è null .

Quindi la riga sembra essere selezionata, ma in realtà non lo è, rendendo impossibile rimuovere la selezione.

Sono sicuro che ci deve essere un'impostazione nascosta da qualche parte su UltraGrid per controllare questo comportamento. E se non è così, forse c'è una soluzione alternativa?

Grazie.

È stato utile?

Soluzione

Dopo qualche altra ricerca ho trovato una soluzione, che condividerò con tutti voi:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();

Altri suggerimenti

Ho esattamente lo stesso problema che hai avuto, ma la soluzione di Gerrie Schenck non funziona per me. Ho usato questo trucco:     MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0];     MyUltraGrid.ActiveRow = null;

prova questo:

this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;

Questo mi ha aiutato a sopprimere " Aspetto attivo " di una griglia:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Se non desideri che una riga sia contrassegnata come selezionata, devi fare lo stesso per " Apparenza selezionata " ;:

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

È importante distinguere tra Selezionato e Attivo. La griglia non seleziona mai alcuna riga automaticamente Ciò che vedi è ActiveRow, che viene visualizzato con un punto culminante proprio come le righe selezionate.

L'ActiveRow della griglia è sincronizzato con CurrencyManager, quindi per impostazione predefinita la prima riga della griglia appare evidenziata. Il ripristino di ActiveRowAppearance e ActiveCellAppearance rimuoverà l'evidenziazione predefinita da ActiveRow.

        this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
        this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();

Ma è importante notare che ciò non impedisce alla riga di diventare la riga attiva, ma solo che la griglia non evidenzia più la riga attiva. Poiché la riga è ancora attiva (e non esiste alcun modo per evitarlo) qualsiasi altra cosa che evidenzi la riga attiva metterà comunque in evidenza la riga. Ad esempio, se si carica un file della libreria di stili (* .isl) nell'applicazione che applica uno stile ad ActiveRow, verrà comunque visualizzato.

Se si desidera disabilitare l'aspetto della riga attiva in un modo più completo, ignorando completamente tutte le impostazioni delle proprietà e le impostazioni della libreria di stili, è possibile farlo:

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Nota che questa proprietà è stata aggiunta nella v9.2 e non esiste nelle versioni precedenti.

In qualche modo nessuna delle soluzioni sopra elencate ha funzionato per me. Nel mio caso volevo semplicemente che l'attivazione / selezione non avvenisse affatto. Quindi ho fatto quanto segue. Potrebbe non essere la soluzione migliore, ma funziona.

    private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
    {
        LayoutVisulizerUltraGrid.ActiveRow = null;
    }

Disabilita del tutto la riga selezionata, quindi l'impostazione ActiveRow su null dovrebbe annullare la selezione.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top