none
Habilitando menustrip do formulário pai. RRS feed

  • Pergunta

  • Boa noite, gostaria de saber se consigo uma resposta que deve ser simples, porém não estou conseguindo desenvolver uma questão, é o seguinte, eu tenho 2 menus no meu menu strip, tenho o arquivomenustrip e o produtomenustrip, eu desabilitei o produto menustrip, e quero habilitar ele para quando o usuário logar, no menu pai eu desabilitei ele usando esse código,

    public void frmindex_Load(object sender, EventArgs e)
            {
                produtoToolStripMenuItem.Enabled = false;
            }

    e criei uma função logo em seguida assim,

    public void HabilitaBotoes()
            {
                produtoToolStripMenuItem.Enabled = true;
            }

    Porém quando no form filho eu instâncio o formpai e depois chamo a função, ele não habilita, estou usando esse seguinte código para tentar habilitar,

    frmindex ind = new frmindex();
                        ind.HabilitaBotoes();

    Cheguei a debugar ele, ele entra na função, mas não habilita meu "produtotollstripmenuitem"

    Estou usando C#

    Desde já agradeço, Marlon

    terça-feira, 19 de junho de 2012 20:35

Todas as Respostas

  • Olá Marlon.

    No form filho ao você criar outro objeto da classe pai, você está manipulando o objeto ind e o qual está em execução é outro.

    Manipule o objeto que está em execução usando a propriedade ParentForm para executar o método criado (ou alterar a propriedade).

    Você também pode utilizar um delegate para determinar um comportamento do objeto em execução.


    If was useful mark as answered. Mariano, Paulo T. C.

    • Sugerido como Resposta ptcmariano quarta-feira, 20 de junho de 2012 11:55
    quarta-feira, 20 de junho de 2012 11:55
  • Bom dia Mariano, na verdade eu consegui habilitar o menu com um delegate como você mencionou que eu podia fazer, eu criei uma label oculta no form filho e recuperei ela no form pai, comparando se ela e depois habilitando o meu menustrip, mas para isso eu tive que fazer dessa forma no form pai,

    public partial class frmindex : Form
        {
            public frmindex(frmlogar frm) // meu form filho é o "frmlogar", eu tive que colocá-lo para
            {                                            // executar no form pai que é o "formindex"
                InitializeComponent();
                if (frm.lblCheio.Text == "sim")
                {
                    produtoToolStripMenuItem.Enabled = true;
                    arquivoToolStripMenuItem.Enabled = false;
                }
            }

    e fiz dessa forma no form filho,

    frmindex ind = new frmindex(this);
                        ind.Show();
                        this.Hide();

    Daí dessa forma o projeto passa a abrir pelo form filho, visto que eu coloquei no arquivo "Program.cs" para ele abrir pelo form filho, daí funcionou, mas na verdade eu queria fazer da primeira forma que você mencionou, usando o "ParentForm", mas não sei dá prosseguimento ao código, depois que eu manipular o objeto ind.ParentForm... o qual outra propriedade que eu tenho que prosseguir???

    desde já agradeço,

    Marlon.

    quarta-feira, 20 de junho de 2012 13:54
  • Tente assim no form filho:

    this.PatensForm.produtoToolStripMenuItem.Enabled = true;

    Que altera a propriedade do Pai.

    Evite de colocar criação de formulários no "Program.cs" pois dependendo da quantidade pode comprometer o desempenho.


    If was useful mark as answered. Mariano, Paulo T. C.

    quarta-feira, 20 de junho de 2012 15:12
  • Você poderia tentar também acessar o form pai...

    Tentar coisas do tipo formpai.form.menustrip1.enable=true (Vb.net)

    Se você irá desbloquear o menu do form pai depois que o usuário logar porque deixou ele desabilitado? Entendo que ele nem poderá enchergar o menu se não for o usuário,...

    Utilize um form para login e senha, passando pela validação faz um check...

    ex. se usuario= xxxx e senha=yyyyy

    faça

    mostrar form com menus

    caso contrário

    não mostre o form e diga que o usuário ou senha está errado.

    Você estaria trabalhando com um form de entrada(login/senha).

    Fica a dica!

    quinta-feira, 28 de junho de 2012 19:33