• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kombypetras

problema com o this.Close()

10 mensagens neste tópico

Pessoal tenho esta classe

namespace Distrivig_2a
{
public partial class saida
{
	public saida()
	{
		this.InitializeComponent();
	}

        protected override void OnClosing(CancelEventArgs e)
        {
            e.Cancel = true;
            base.OnClosing(e);
        }
        //click do botão OK
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            App.Current.Shutdown(0);
        }
        //click do botão cancelar
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
}
}

o meu problema e o seguinte:

se comentar o método OnClosing funciona o botão cancelar mas se o método OnClosing estiver activo o botão cancelar quando clicado deixa de funcionar.

Será que alguém me pode ajudar???

Agradeço desde já a vossa ajuda.

[move]Bruno Santos [/move]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É o que faz copiar código sem se saber o que se está a copiar...

No OnClosing estás a cancelar o evento, logo o Close é cancelado.

Presumo que a classe Saida (deve começar por maiúscula) estenda a classe Form. A partir do .Net 2.0 isso ficou obsoleto e deve-se usar o evento OnFormClosing.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu já tinha percebido que isso cancela o evento do Close, e eu utilizo isso para que o X de uma window não seja utilizado.

Agora o problema e que quando tento fechar essa janela sem fechar a aplicação ele não funciona e não estou a conseguir habilitar o evento de novo ou utilizar uma outra forma de efectuar esta operação de fechar a window mas não a aplicação.

De referenciar que estou a criar uma WPF.

Obrigado pela dica do nome da classe, não tinha reparado que tinha esse erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi nada.

Se o problema é o botão X porque não o metes a não aparecer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa aminha ignorancia mas para quem aprende é sempre assim.

Será que me podias explicar como retirar o botão?

Nas propriedades podemos modificar a windowStile para none, só que perde aquele modelo de contorno da janela.

Não sei se me fiz entender, mas agradeço desde já a tua ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O evento OnClosing ocorre SEMPRE que a form for a fechar. Ou seja, ao fazeres e.Cancel = true estás a cancelar o fecho. Quando fazes this.Close, ele vai iniciar o fecho da form, mas antes vai executar o evento OnClosing. Logo a tua form nunca fechará.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu já tinha percebido isso.

O que eu gostava de perceber agora e se não há uma maneira de não executar o OnClosing ou usar outro método para fechar a janela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu já tinha percebido isso.

O que eu gostava de perceber agora e se não há uma maneira de não executar o OnClosing ou usar outro método para fechar a janela.

Mas o que é que queres fazer ao certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho uma janela principal e quando escolho o item sair no menu, aparece uma janela para confirmação se o utilizador quer sair ou não (criei esta janela para poder seguir o modelo que criei para as janelas e não o pré definido pelo windows). Quando isto acontece aparece a janela e não queria que o utilizador pudesse fechar a aplicação na X, mas sim sempre ou no botão Ok ou Cancelar, onde o Ok fecha toda a aplicação e o Cancelar faz voltar o utilizador à janela principal.

Não sei se me fiz entender....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora