Talvez você tenha notado que ao clicar com o botão direito na aba que pretende apagar, ela precisa estar selecionada para que ocorra o comportamento esperado. Caso contrário, o programa irá ignorar a aba clicada e se baseará na aba selecionada.
Contornei isto com o código abaixo:
if (e.Button == MouseButtons.Right)
{
// Código da aula...
// Percorremos todas as páginas de tbcAplicacoes
for (int i = 0; i < tbcAplicacoes.TabCount - 1; i++)
{
//GetTabRect irá retornar um retângulo para a aba da página,
//verificamos se o local em que clicamos está dentro da área deste retângulo
if (tbcAplicacoes.GetTabRect(i).Contains(e.Location))
{
//Ao encontrarmos, selecionamos a página
tbcAplicacoes.SelectTab(i);
}
}
Isto basicamente faz com que a página seja selecionada ao clicarmos nela com o botão DIREITO também (o mesmo comportamento ocorre nas guias do Visual Studio 2019).
Outra forma:
for (int i = 0; i < tbcAplicacoes.TabCount - 1; i++)
{
if (tbcAplicacoes.GetTabRect(i).Contains(e.Location))
{
// Atribuímos o índice da página clicada na variável Global, indicePagina
indicePagina = i;
}
}
Nas chamadas de ApagaDireita e ApagaEsquerda, você passará como parâmetro a variável indicePagina
.
No evento que apaga todas, exceto selecionada, deve-se inverter a ordem: primeiro ApagaDireita, depois ApagaEsquerda.
No evento que apaga a selecionada (neste caso está mais para "clicada") ficará: tbcAplicacoes.TabPages.Remove(tbcAplicacoes.TabPages[indicePagina]);
Agora o programa se baseará na página clicada, mas não irá selecioná-la quando clicamos nela com o botão direito. Comportamento semelhante ao do Chrome, por exemplo.