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();
}
}