Desligue chamando o método tabPage_Enter em C #
-
22-07-2019 - |
Pergunta
Quando eu alternar guias com o seguinte código
tabControl1.SelectTab("MyNextTab");
Ele chama o tabPage_Enter para o guia é a mudança de e a guia é mudar para. Eu quero que ele seja chamado para o guia é a mudança para, mas não o guia é alternando. Como eu iria desligar isso. Eu sei quando acontece isso, se houve uma chamada que eu poderia fazer que seria desligar chamar o método entrar para esse guia eu poderia implementar isso.
Solução
Sim, eu repro se eu usar um botão para alterar a guia selecionada. TabControl força o foco para si mesmo antes de mudar SelectedIndex. Esta parece ter sido feito para evitar problemas com o evento Validating. A mudança de foco produz o evento entra pela primeira vez, para a aba ativa, a mudança guia, em seguida, produz o evento segundo Enter.
Sabendo disso, você pode definir um ajudante boolean membro, indicando que o evento entra pela primeira vez deve ser ignorado. Tenha o cuidado de verificar se a guia atual já não é o que você deseja selecionar. Em um mundo perfeito, este comportamento não deve importar. O foco realmente fez mudança para a aba ativa em primeiro lugar.
Outras dicas
É possível verificar o índice da guia ativa e resolver usando isso?
Enrole o código no evento dentro de um cheque para que ele só processa quando você quer que ele.
Se você pode escrever código para desligá-lo, então você pode escrever código para definir um estado que impediu o código no evento de execução.