0
respostas

Tela Editar abre duas vezes seguida

Olá! Estou com problemas no programa desenvolvido até o final da aula 2 (Delegates). Ao rodar o programa, quando escolho uma opção do campo e clico em Editar, abre a janela para edição. Quando eu clico em OK ou em Cancelar esta janela para edição é fechada e, em seguida, a mesma é aberta mais uma vez. Ao clicar, novamente, em OK ou Cancelar a janela é fechada (desta vez a janela para edição não é aberta de novo).

Há dias estou revisando o código e não acho o problema. Baixei o código da aula 1 (no início da aula 2) e apaguei os códigos que estavam prontos e refiz os passos da aula 2. O programa não dá nenhum erro ao compilar. Apenas abre novamente a tela de edição ao clicar em OK ou Cancelar. Depois não ocorre mais esse problema, a não ser que eu repita o processo na janela principal (botão Editar).

//EdicaoAgencia.xaml.cs
using ByteBank.Agencias.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace ByteBank.Agencias
{
    /// <summary>
    /// Lógica interna para EdicaoAgencia.xaml
    /// </summary>
    public partial class EdicaoAgencia : Window
    {
        private readonly Agencia _agencia;
        public EdicaoAgencia(Agencia agencia)
        {
            InitializeComponent();
            _agencia = agencia ?? throw new ArgumentNullException(nameof(agencia));
            AtualizarCamposDeTexto();
            AtualizarControles();


        }
        private void AtualizarCamposDeTexto()
        {
            txtNumero.Text = _agencia.Numero;
            txtNome.Text = _agencia.Nome;
            txtTelefone.Text = _agencia.Telefone;
            txtEndereco.Text = _agencia.Endereco;
            txtDescricao.Text = _agencia.Descricao;
        }
        private void AtualizarControles()
        {
            var okEventHandler = (RoutedEventHandler)btnOk_Click + Fechar;
            var cancelarEventHandler = (RoutedEventHandler)btnCancelar_Click + Fechar;
            btnOk.Click += okEventHandler;
            btnCancelar.Click += cancelarEventHandler;

        }

        private void btnOk_Click(object sender, EventArgs e) => DialogResult = true;

        private void btnCancelar_Click(object sender, EventArgs e) => DialogResult = false;

        private void Fechar(object sender, EventArgs e) => Close();





    }
}