Pergunta

eu estou tentando chegar a uma maneira muito simples para armazenar um valor booleano para cada TabPage em um tabcontrol. cada página tem uma caixa de texto, e eu gostaria de armazenar uma página bool foreach por isso, se TabPage 1 foi salvo, então bool1 é definido como verdadeiro falso, mais, e assim por diante.

, em seguida, quando eles vão para fechar o programa vai passar por cima de todas as TabPages e ver se cada TabPage foi salvo ou não. eu preciso ser capaz de criar algum tipo de uma lista que eu possa pesquisar e manipular.

i já usou propriedades de tag para isso, mas, por alguma razão que não funciona corretamente mais.

qualquer conselho ajuda seria greatl; y apreciada:)

obrigado,

bael.

Foi útil?

Solução

Nem array, nem lista, nem dicionário são a estrutura de dados certo para acompanhar o estado booleano de um conjunto de objetos. A estrutura que faz isso e nada mais é HashSet<T>. Ou um T está no conjunto, ou não é.

É superior a uma Dictionary<T, bool> porque isso realmente mantém dois estados:. Se o objeto está no dicionário ou não, e se é, se o seu valor for true ou false

É superior a uma List<T> por dois motivos: É mais rápido (embora no seu caso, que quase certamente será insignificante), e isso não implica que há algum significado para a ordem dos objetos que ela contém, desde o fim de objetos em um HashSet<T> é arbitrária.

Outras dicas

List<TabPage>

loja apenas aqueles TabPage (s) que precisa ser salvo. Se vazio, não precisa de nada para ser salvo.

Você pode usar, por exemplo, um Dictionary<TabPage,bool>. No início da sua aplicação:

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

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

Para alterar o estado de um TabPage:

pageStates[page]=true;

E quando seus acabamentos de aplicação:

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

Se você é iteração através sem remover ou adicionar elementos usar o array.

Se você é iteração através mas adicionando e removendo elementos usar a lista.

Se você estiver usando cordas como chaves, em seguida, usar o dicionário.

O dicionário tem um desempenho muito rápido de pesquisa com um número elevado de elementos comparados com a lista.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top