Domanda

Sto cercando di trovare un modo molto semplice per memorizzare un valore booleano per ogni tabpage in un tabcontrol. ogni pagina ha una casella di testo e vorrei memorizzare una pagina bool foreach quindi se la pagina 1 è stata salvata, allora bool1 è impostato su true, altrimenti false e così via.

quindi quando vanno a chiudere il programma, si sposteranno su tutte le tabpage e vedranno se ogni tabpage è stata salvata o meno. devo essere in grado di creare una sorta di elenco che posso cercare e manipolare.

Ho precedentemente usato le proprietà dei tag per questo, ma per qualche motivo che non funziona più CORRETTAMENTE.

qualsiasi consiglio di aiuto sarebbe fantastico; y apprezzato :)

grazie

Bael.

È stato utile?

Soluzione

Né l'array, né l'elenco, né il dizionario sono la struttura dati corretta per tracciare lo stato booleano di un insieme di oggetti. La struttura che fa questo e nient'altro è HashSet<T>. Nel set è presente un T oppure no.

È superiore a Dictionary<T, bool> perché in realtà mantiene due stati: se l'oggetto è nel dizionario o meno, e se lo è, se il suo valore è vero o falso.

È superiore a <<> per due motivi: è più veloce (anche se nel tuo caso, sarà quasi sicuramente trascurabile), e non implica che ci sia un significato nell'ordine degli oggetti che contiene, poiché l'ordine degli oggetti in List<T> è arbitrario.

Altri suggerimenti

List<TabPage>

Memorizza solo quelle schede che devono essere salvate. Se vuoto, non è necessario salvare nulla.

È possibile utilizzare ad esempio un Dictionary<TabPage,bool>. All'inizio dell'applicazione:

var pageStates=new Dictionary<TabPage,bool>();

foreach(var page in tabControl.TabPages) {
    pageStates.Add(page, false);
}

Per modificare lo stato di un TabPage:

pageStates[page]=true;

E al termine dell'applicazione:

foreach(var page in TabControl.TabPages) {
    if(pageStates[page]) {
        //The page is saved
    }
}

Se stai iterando senza rimuovere o aggiungere elementi usa l'array.

Se stai ripetendo, ma aggiungendo e rimuovendo elementi, usa l'Elenco.

Se si utilizzano stringhe come chiavi, utilizzare il dizionario.

Il dizionario ha prestazioni di ricerca molto veloci con un numero elevato di elementi rispetto all'elenco.

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