public void CarregaMenu() { //Obtém as opções do banco de dados MenuPrincipal menu = new MenuPrincipal(); opcoes = menu.GetOpcoes(); //Tamanho da tela int yOpc = pMenu.Size.Height; //Quantidade de itens no menu int qtd = opcoes.Count; //Calculo para centralizar os botões verticalmente int pos1 = ((yOpc - qtd * hBtn) / 2) - (hBtn / 2); for (int i = 0; i < qtd; i++) { int pos = pos1 + (i * hBtn); MenuPrincipalDTO dto = (MenuPrincipalDTO)opcoes[i]; string nome = dto.Opcao; string icnNome = $"icn{nome}"; string btnNome = $"{nome}"; AddIcn(pos, icnNome); AddButton(pos, btnNome, dto.Descricao); } }
/// <summary> /// Click de alguma opção do menu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MenuClick(object sender, EventArgs e) { //Deixa todos com a cor padrão foreach (Control c in pMenu.Controls) { if (c is Panel) { c.Visible = false; } if (c is Button) { c.BackColor = pMenu.BackColor; } } Button b = (Button)sender; string pName = "icn" + b.Name; //Muda para as novas cores b.BackColor = crBtnSl; Panel icn = pMenu.Controls.Find(pName, false).FirstOrDefault() as Panel; icn.Visible = true; //Busca qual a opção selecionada para então buscar subOpções int menuSelecionado = -1; for (int i = 0; i < opcoes.Count; i++) { MenuPrincipalDTO dto = (MenuPrincipalDTO)opcoes[i]; if (dto.Opcao == b.Name) { menuSelecionado = i; } } MontaSubMenu subMenu = new MontaSubMenu(pSubMenu); subMenu.CarregaMenu((MenuPrincipalDTO)opcoes[menuSelecionado]); }
public void CarregaMenu(MenuPrincipalDTO pai) { //Obtém as opções do banco de dados SubMenu menu = new SubMenu(); ArrayList opcoes = menu.GetOpcoes(pai); if (opcoes.Count < 1) { AddBackGroudImage(); return; } //Tamanho da tela int hTela = pSubMenu.Size.Height; int wTela = pSubMenu.Size.Width; //Quantidade de itens no menu int qtd = opcoes.Count; int qtdOpcoesLinha = (wTela / wBtn) - 1; int qtdLinhas = qtd / qtdOpcoesLinha; if (qtd % qtdOpcoesLinha != 0) { qtdLinhas++; } //Calculo para centralizar os botões int iniPosY; int iniPosX; //Verifica se precisa mais de uma linha if (qtd > qtdOpcoesLinha) { iniPosY = (hTela / 2) - (qtdLinhas * hBtn / 2); iniPosX = (wTela / 2) - (qtdOpcoesLinha * wBtn / 2); } else { iniPosY = (hTela / 2) - (hBtn / 2); iniPosX = (wTela / 2) - (qtd * wBtn / 2); } //for para as linhas for (int i = 0; i < qtdLinhas; i++) { int posY = iniPosY + (i * hBtn); //Calculas quantos item terão nessa linha int restantes = qtd - (qtdOpcoesLinha * i); if (restantes > qtdOpcoesLinha) { restantes = qtdOpcoesLinha; } //for para as colunas for (int j = 0; j < restantes; j++) { int opc = j + i * qtdOpcoesLinha; /* Verifica se precisa recalcular as posições * Necessário para quando tiver poucas opções na linha */ int posX; if (restantes < qtdOpcoesLinha) { posX = (wTela / 2) - (restantes * wBtn / 2); posX += j * wBtn; } else { posX = iniPosX + (j * wBtn); } //Pega as informações provinda do banco de dados para mostrar o botão para o usuário SubMenuDTO dto = (SubMenuDTO)opcoes[opc]; string nome = dto.Opcao; string btnNome = $"{nome}"; AddButton(posY, posX, btnNome, dto.Descricao); } } }