none
Form travar outro form RRS feed

  • Pergunta

  • Olá pessoa,alguém poderia me dizer como eu consigo fazer tipo uma messageBox, quando ela aparece o form fica travado até ele ser fechada, eu preciso disso porque quero fazer uma msgBox personalizada, eu tentei fazer normalmente mas não deu certo,  coloquei um loop e o programa travou :\

    quem puder me ajudar agradeço.

    =]

    terça-feira, 28 de agosto de 2012 08:29

Respostas

  • Utilize a opção ShowDialog() ao invés de Show().

    Nos botões do seu form você atribui um DialogResult para o form de "Mensagem", conforme o que o usuário clicou.

    ai você pode fazer da seguinte maneira:

            public void TestarMensagem()
            {
                Form2 formMensagem = new Form2();
    
                if (formMensagem.ShowDialog() == System.Windows.Forms.DialogResult.Yes)
                {
    
                }
                else
                {
    
                }
    
            }
    

    no seu form você atribui um resultado, conforme a opção que ele clicar.

    this.DialogResult = System.Windows.Forms.DialogResult.Yes;
    /*Ou*/
    this.DialogResult = System.Windows.Forms.DialogResult.No;


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7

    terça-feira, 28 de agosto de 2012 12:05
  • eu fiz assim :

    Quando o form é carregado, ae faço que você disse nos 2 botões

            private void Mensagem_Load(object sender, EventArgs e)
            {
                btt_deNovo.DialogResult = DialogResult.Yes;
                btt_Sair.DialogResult = DialogResult.No;
            }

    e uso assim :

                mensagem = new Mensagem();
                if (mensagem.ShowDialog() == DialogResult.Yes)
                {
                    ...
                }
                 else this.Close();
    
             


    Mas está travando o programa...

    :\

    ____EDITED_____
    Pode deixar, já consegui, como eu disse acima, eu tentei colocar um loop, mas eu não tinha tirado, depois que eu tirei funcionou... =], valeu ae cara

    • Editado Shoxsz terça-feira, 28 de agosto de 2012 21:46
    • Marcado como Resposta Harley AraujoModerator quinta-feira, 30 de agosto de 2012 11:24
    terça-feira, 28 de agosto de 2012 21:36

Todas as Respostas

  • ola Shoxsz

    você pode colocar um messageBox personalizado.

    OK Cancelar

    chama o novo form e abre o messageBox com as opções Ok e cancelar

    se clicar Ok abre o form se clicar cancelar permanece onde está, ou seja, não faz nada.

    if
    
                (MessageBox.Show(("Confirma Abrir novo Form?"), "Mensagem", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
    //coloca aqui a chamada do OK.
                    
                }
                else
                {
                    //coloca aqui a chamado do Cancelar. Caso deixar em branco ele nao fará nada
                }

    caso eu nao tenha compreendido de forma correta a sua pergunta, volta a postar.

    se for util vote como tal.

    • Sugerido como Resposta Marcos_Roberto terça-feira, 28 de agosto de 2012 11:11
    terça-feira, 28 de agosto de 2012 11:00
  • não, seria tipo assim, ex : quando ele fechar o form, aparecia o outro form, como se fosse uma MsgBox, ele teria a mesma função, mas os botões seriam diferentes e teria uma imagem de fundo.

    Mesma função de uma MsgBox mas com uma interface criada por mim.

    tipo:

    private void buttonTalz_Click(...)
    {
        minhaMsgBox.Show();
    
        if(minhaMsgBox.Continuar)
        {
         ...
         }
        else
        {
         ...
         }
    
    }

    'Continuar' seria uma properties que indica qual botão da minhaMsgBox foi pressionado

    só que ele já vai pro 'if' sem esperar a 'minhaMsgBox' fechar, eu queria que ele só executasse o 'if' depois da confirmação na minhaMsgBox

    
    
    
    
    


    • Editado Shoxsz terça-feira, 28 de agosto de 2012 11:42
    terça-feira, 28 de agosto de 2012 11:40
  • Utilize a opção ShowDialog() ao invés de Show().

    Nos botões do seu form você atribui um DialogResult para o form de "Mensagem", conforme o que o usuário clicou.

    ai você pode fazer da seguinte maneira:

            public void TestarMensagem()
            {
                Form2 formMensagem = new Form2();
    
                if (formMensagem.ShowDialog() == System.Windows.Forms.DialogResult.Yes)
                {
    
                }
                else
                {
    
                }
    
            }
    

    no seu form você atribui um resultado, conforme a opção que ele clicar.

    this.DialogResult = System.Windows.Forms.DialogResult.Yes;
    /*Ou*/
    this.DialogResult = System.Windows.Forms.DialogResult.No;


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7

    terça-feira, 28 de agosto de 2012 12:05
  • eu fiz assim :

    Quando o form é carregado, ae faço que você disse nos 2 botões

            private void Mensagem_Load(object sender, EventArgs e)
            {
                btt_deNovo.DialogResult = DialogResult.Yes;
                btt_Sair.DialogResult = DialogResult.No;
            }

    e uso assim :

                mensagem = new Mensagem();
                if (mensagem.ShowDialog() == DialogResult.Yes)
                {
                    ...
                }
                 else this.Close();
    
             


    Mas está travando o programa...

    :\

    ____EDITED_____
    Pode deixar, já consegui, como eu disse acima, eu tentei colocar um loop, mas eu não tinha tirado, depois que eu tirei funcionou... =], valeu ae cara

    • Editado Shoxsz terça-feira, 28 de agosto de 2012 21:46
    • Marcado como Resposta Harley AraujoModerator quinta-feira, 30 de agosto de 2012 11:24
    terça-feira, 28 de agosto de 2012 21:36