No exercício de formulários da aula 04 é mostrado como fazer um novo formulário especificamente para cadastrar novas contas e colocar um botão no formulário principal que levaria a esse novo formulário. Fiz como mostrado na aula, porém quando executo o programa e clico no botão Nova Conta (no formulário principal) é aberto um formulário em branco, sem nenhum campo.
Código criado para o novo formulário com base na aula:
public partial class CadastroDeContas : Form
{
public CadastroDeContas()
{
InitializeComponent();
}
public CadastroDeContas(Form1 form1)
{
this.form1 = form1;
}
private Form1 aplicacaoPrincipal;
private Form1 form1;
public void cadastroDeContas(Form1 aplicacaoPrincipal)
{
this.aplicacaoPrincipal = aplicacaoPrincipal;
}
private void botaoCadastro_Click(object sender, EventArgs e)
{
Conta novaConta = null;
if (comboTipoConta.Text == "Corrente")
{
novaConta = new ContaCorrente();
}
if (comboTipoConta.Text == "Poupanca")
{
novaConta = new ContaPoupanca();
}
novaConta.Titular = new Cliente(titularConta.Text);
novaConta.Numero = Convert.ToInt32(numeroConta.Text);
this.aplicacaoPrincipal.AdicionaConta(novaConta);
}
}
}
Código do formulario principal:
namespace CaixaEletronico
{
public partial class Form1 : Form
{
public Conta [] contas;
private int quantidadeDeContas;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
contas = new Conta[3];
Conta contaDoVictor = new Conta();
contaDoVictor.Titular = new Cliente();
contaDoVictor.Titular.Nome = "Victor";
contaDoVictor.Numero = 1;
contas[0] = contaDoVictor;
Conta contaDoGuilherme = new Conta();
contaDoGuilherme.Titular = new Cliente();
contaDoGuilherme.Titular.Nome = "Guilherme";
contaDoGuilherme.Numero = 2;
contas[1] = contaDoGuilherme;
Conta contaDoMauricio = new Conta();
contaDoMauricio.Titular = new Cliente();
contaDoMauricio.Titular.Nome = "Mauricio";
contaDoMauricio.Numero = 3;
contas[2] = contaDoMauricio;
foreach (Conta conta in this.contas)
{
comboContas.Items.Add(conta);
destinoDaTransferencia.Items.Add(conta);
}
}
private void button1_Click(object sender, EventArgs e)
{
string textoValorSaque = valorOperacao.Text;
double valorDeposito = Convert.ToDouble(textoValorSaque);
int indiceSelecionado = comboContas.SelectedIndex;
Conta contaSelecionada = this.contas[indiceSelecionado];
contaSelecionada.Deposita(valorDeposito);
this.MostraConta(contaSelecionada);
}
private void button2_Click(object sender, EventArgs e)
{
string textoValorSaque = valorOperacao.Text;
double valorSaque = Convert.ToDouble(textoValorSaque);
Conta contaSelecionada = this.BuscaContaSelecionada();
contaSelecionada.Saca(valorSaque);
this.MostraConta(contaSelecionada);
}
private void MostraConta(Conta conta)
{
textoTitular.Text = conta.Titular.Nome;
textoSaldo.Text = Convert.ToString(conta.Saldo);
textoNumero.Text = Convert.ToString(conta.Numero);
}
private Conta BuscaContaSelecionada()
{
int indiceSelecionado = comboContas.SelectedIndex;
return this.contas[indiceSelecionado];
}
private void button3_Click(object sender, EventArgs e)
{
Conta c1 = new Conta();
c1.Deposita(200.0);
ContaPoupanca c2 = new ContaPoupanca();
c2.Deposita(125.0);
TotalizadorDeContas t = new TotalizadorDeContas();
t.Soma(c1);
t.Soma(c2);
MessageBox.Show("valor total: " + t.ValorTotal);
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string titularSelecionado = comboContas.Text;
Conta contaSelecionada = this.BuscaContaSelecionada();
this.MostraConta(contaSelecionada);
}
private void button4_Click(object sender, EventArgs e)
{
Conta contaSelecionada = this.BuscaContaSelecionada();
int indiceDaContaDestino = destinoDaTransferencia.SelectedIndex;
Conta contaDestino = this.contas[indiceDaContaDestino];
string textoValor = valorOperacao.Text;
double valorTransferencia = Convert.ToDouble(textoValor);
contaSelecionada.TransferePara(contaDestino, valorTransferencia);
this.MostraConta(contaSelecionada);
}
public void AdicionaConta(Conta contas)
{
this.contas[this.quantidadeDeContas] = contas;
this.quantidadeDeContas++;
comboContas.Items.Add(contas);
}
private void novaConta_Click(object sender, EventArgs e)
{
CadastroDeContas formularioDeCadastro = new CadastroDeContas(this);
formularioDeCadastro.ShowDialog();
}
}
}