none
Problema com UserControl... RRS feed

  • Pergunta

  • Boa tarde, a algum tempo, estava em dúvida de como fechar uma UserControl. Problema resolvido, mas surgiu outro. Uma primeira UserControl "Login", ao ser autenticada, deve FECHAR e ABRIR outra UserControl "Main". O comando que uso para fechar é this.Close(); , mas esta UserControl fecha e não consegue abrir outra, mesmo antes de fechar. Alguém tem alguma solução? Dei uma olhada neste link: 

    http://social.msdn.microsoft.com/Forums/pt-BR/e560af56-8257-4e44-8024-e765dad4d93f/problemas-com-manipulao-de-usercontrols-no-mesmo-form?forum=vscsharppt

    Mas acho que não resolve o meu problema.

    sábado, 8 de fevereiro de 2014 18:56

Respostas

  • Pra falar a verdade, eu não tenho um código pronto. Apenas tento fazer de vários caminhos diferentes. O caminho mais comum que tentei foi:

    Form1 frm = new Form1();

    frm.panel1.Controls.Add(Main);

    this.Dispose();

    Esse código eu coloco na UserControl "Login" que depois de ser autenticada, como diz no código, tem que adicionar o segundo Usercontrol e depois fecha.


    this.Dispose(); esse cara é derruba tudo !!! é isso ...

    Assim:

    Crie no seu USerControl Login

    public delegate void _OnClose(bool Status);
    public event _OnClose OnClose; 
    

    No botão que verifica o login se for valido se coloca assim

    private void ButEntrar_Click(object sender, EventArgs e)
    {
          this.OnClose(true);
    }

    Ai no Formulario principal aonde ta adiciona esse controle coloque assim

    private void Form2_Load(object sender, EventArgs e)
    {
         ucLogin1.OnClose += ucLogin1_OnClose;
    }
    void ucLogin1_OnClose(bool Status)
    {
       if (Status)
       {
          panel1.Controls.Remove(ucLogin1); // removendo login
          Main ucMain = new Main(); //instanciando
          panel1.Controls.Add(ucMain); // adicionado o main
       }
    }

    Ao clica no botão fica assim



    Fulvio Cezar Canducci Dias

    domingo, 9 de fevereiro de 2014 01:30

Todas as Respostas

  • Cade seu código!

    Porque se pode trabalhar de tantas formas com esse problema!

    não da certo porque se fecha o primeiro e ao fechar ele não executa o segundo é isso!!!

    Tem trecho do código?


    Fulvio Cezar Canducci Dias

    domingo, 9 de fevereiro de 2014 01:12
  • Pra falar a verdade, eu não tenho um código pronto. Apenas tento fazer de vários caminhos diferentes. O caminho mais comum que tentei foi:

    Form1 frm = new Form1();

    frm.panel1.Controls.Add(Main);

    this.Dispose();

    Esse código eu coloco na UserControl "Login" que depois de ser autenticada, como diz no código, tem que adicionar o segundo Usercontrol e depois fecha.


    domingo, 9 de fevereiro de 2014 01:16
  • Pra falar a verdade, eu não tenho um código pronto. Apenas tento fazer de vários caminhos diferentes. O caminho mais comum que tentei foi:

    Form1 frm = new Form1();

    frm.panel1.Controls.Add(Main);

    this.Dispose();

    Esse código eu coloco na UserControl "Login" que depois de ser autenticada, como diz no código, tem que adicionar o segundo Usercontrol e depois fecha.


    this.Dispose(); esse cara é derruba tudo !!! é isso ...

    Assim:

    Crie no seu USerControl Login

    public delegate void _OnClose(bool Status);
    public event _OnClose OnClose; 
    

    No botão que verifica o login se for valido se coloca assim

    private void ButEntrar_Click(object sender, EventArgs e)
    {
          this.OnClose(true);
    }

    Ai no Formulario principal aonde ta adiciona esse controle coloque assim

    private void Form2_Load(object sender, EventArgs e)
    {
         ucLogin1.OnClose += ucLogin1_OnClose;
    }
    void ucLogin1_OnClose(bool Status)
    {
       if (Status)
       {
          panel1.Controls.Remove(ucLogin1); // removendo login
          Main ucMain = new Main(); //instanciando
          panel1.Controls.Add(ucMain); // adicionado o main
       }
    }

    Ao clica no botão fica assim



    Fulvio Cezar Canducci Dias

    domingo, 9 de fevereiro de 2014 01:30
  • Muito obrigado, resolveu um problema que eu tinha de muito tempo.
    domingo, 9 de fevereiro de 2014 01:46
  • Por favor, você teria esta rotina em vb.

    grato pela atenção...

    segunda-feira, 7 de abril de 2014 16:51
  • // USER CONTROL LOGIN

    Public Class ucLogin Public Event OnClose(ByRef Status As Boolean) Private Sub ButEntrar_Click(sender As Object, e As EventArgs) Handles ButEntrar.Click RaiseEvent OnClose(True) End Sub End Class

    //FORM 1 - PRINCIPAL

    Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AddHandler UcLogin1.OnClose, AddressOf LoginOnClose End Sub Private Sub LoginOnClose(ByRef Status As Boolean) Me.Controls.Remove(UcLogin1) Dim CtrlMain As New Main Me.Controls.Add(CtrlMain) Me.Update() End Sub End Class

    a lógica dos formulários é a mesma coisa ok!


    Fulvio Cezar Canducci Dias

    segunda-feira, 7 de abril de 2014 23:19