Bom dia pessoal.
No meu projeto criei alguns Controls Personalizados como por exemplo o de busca Cidade:

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
