Problema com Controls e App.config C#

0 respostas
csharp
EduGomes

Bom dia pessoal.

No meu projeto criei alguns Controls Personalizados como por exemplo o de busca Cidade:

cidadecontrol

Código:

using _5gpro.Daos;
using _5gpro.Entities;
using _5gpro.Forms;
using System;
using System.ComponentModel;
using System.Windows.Forms;


namespace _5gpro.Controls
{
    public partial class BuscaCidade : UserControl
    {
        public Cidade cidade = null;
        
        private readonly CidadeDAO cidadeDAO = new CidadeDAO();

        public BuscaCidade()
        {
            InitializeComponent();
        }

        private void BtBuscaCidade_Click(object sender, System.EventArgs e)
        {
            AbreTelaBuscaCidade();
        }

        private void TbFiltroCodigoCidade_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F3)
            {
                e.Handled = true;
                AbreTelaBuscaCidade();
            }
        }

        private void TbFiltroCodigoCidade_Leave(object sender, System.EventArgs e)
        {
            if (!int.TryParse(tbCodigoCidade.Text, out int codigo)) { tbCodigoCidade.Clear(); }
            if (tbCodigoCidade.Text.Length > 0)
            {
                cidade = cidadeDAO.BuscaCidadeByCod(int.Parse(tbCodigoCidade.Text));
                PreencheCamposCidade(cidade);
            }
            else
            {
                cidade = null;
                tbNomeCidade.Clear();
            }
        }


        private void AbreTelaBuscaCidade()
        {
            var buscaCidade = new fmBuscaCidade();
            buscaCidade.ShowDialog();
            if (buscaCidade.cidadeSelecionada != null)
            {
                cidade = buscaCidade.cidadeSelecionada;
                PreencheCamposCidade(cidade);
            }
        }

        private void PreencheCamposCidade(Cidade cidade)
        {
            if (cidade != null)
            {
                tbCodigoCidade.Text = cidade.CidadeID.ToString();
                tbNomeCidade.Text = cidade.Nome;
            }
            else
            {
                MessageBox.Show("Cidade não encontrada no banco de dados",
                "Cidade não encontrada",
                MessageBoxButtons.OK,
                MessageBoxIcon.Warning);
                tbCodigoCidade.Clear();
                tbCodigoCidade.Focus();
                tbCodigoCidade.SelectAll();
            }
        }

        public void PreencheCampos(Cidade cidade)
        {
            this.cidade = cidade;
            tbCodigoCidade.Text = this.cidade != null ? this.cidade.CidadeID.ToString() : "";
            tbNomeCidade.Text = this.cidade != null ? this.cidade.Nome : "";
        }

        public void Limpa()
        {
            tbCodigoCidade.Clear();
            tbNomeCidade.Clear();
            cidade = null;
        }




        //--------------------------------------------------
        //CRIA O EVENTO Text_Changed DO USERCONTROL
        //--------------------------------------------------
        public delegate void text_changedEventHandler(object sender, EventArgs e);

        [Category("Action")]
        [Description("É acionado quando o conteúdo do código da pessoa é alterado")]
        public event text_changedEventHandler Text_Changed;
        //--------------------------------------------------

        private void TbCodigoCidade_TextChanged(object sender, EventArgs e)
        {
            this.Text_Changed?.Invoke(this, e);
        }
    }
}

Ate ai tudo bem. O problema começou quando eu alterei minha classe conexão para buscar o string de conexão do App.config:

Classe de conexão:

using MySql.Data.MySqlClient;
using System;
using System.Configuration;
using System.IO;

namespace _5gpro.Daos
{
    public class ConexaoDAO
    {

        public string Conecta = ConfigurationManager.ConnectionStrings["connectionAppConfig"].ConnectionString;
        public MySqlConnection Conexao;
        public MySqlTransaction tr = null;
        public MySqlCommand Comando = null;

        //MÉTODO PARA CONECTAR NO BANCO
        public void AbrirConexao()
        {
            try
            {
                Conexao = new MySqlConnection(Conecta);
                Conexao.Open();
            }
            catch (MySqlException ex)
            {
                Console.WriteLine("Error: {0}", ex.ToString());
            }
        }

        //METODO PARA FECHAR A CONEXAO COM O BANCO

        public void FecharConexao()
        {
            try
            {
                if (Conexao != null)
                {
                    Conexao.Close();
                }
            }
            catch (MySqlException ex)
            {
                Console.WriteLine("Error: {0}", ex.ToString());
            }
        }
    }
}

O problema acontece nessa linha de código:

public string Conecta = ConfigurationManager.ConnectionStrings["connectionAppConfig"].ConnectionString;

O meu App.config está assim:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="connectionAppConfig" connectionString=" Server=localhost; Database=nomedatabase; Uid=user; Password=senha"/>
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

Dessa forma quando eu tento entrar no Designer de alguma tela onde está sendo usado o Control, eu tenho o seguinte erro, no caso isso é na tela de cadastro de pessoa que possui o busca cidade:

Se na classe Conexão eu usar uma string do tipo

`    public string Conecta = "Server=localhost; Database=nomedatabase; Uid=user; Password=senha";`

Em vez de consultar no APP.config, ai funciona tudo normal.

Se alguem já passou por isso, ou sabe qual é o motivo e queira compartilhar o conhecimento, eu agradeço fortemente.

Desde já muito obrigado

Criado 18 de abril de 2019
Respostas 0
Participantes 1