C# - Trabalhando com ComboBox
Boa noite!
Estou começando com C# no Visual Studio 2015 e deparei-me com certa dificuldade em trabalhando com ComboBox, pesquisei um monte na internet e não encontrei nada, agora que completaram 4 dias tentando de tudo, desisti e joguei a toalha na lona, acho que perdi por nockout.
Caso alguém saiba, por favor me ajude a resolver isto:
Situação:
No formulário do cadastro de Cidades tenho um ComboBox para selecionar o estado, este ComboBox é povoado por uma tabela atraves do método abaixo:
public void getEstados()
{
BindingSource dbEstados = new BindingSource();
dbEstados = dal.openQuery("select estcodigo, estsigla || ' - ' || estnome as estado from pessoas.tbestados order by estsigla");
cmbEstSigla.ValueMember = "estcodigo";
cmbEstSigla.DisplayMember = "estado";
cmbEstSigla.DataSource = dbEstados;
if (FormStatus == ActionStatusForm.Editar)
{
cmbEstSigla.SelectedValue = setEditorsValue[2].OldValue;
}
/* Valor selecionado na combo estará na propriedade "SelectedValue" */
}Está funcionando perfeito, condigo gravar o cadastro na tabela, tudo tranquilo.
Daí o problema, seleciono no DataGridView um registro e vou altera-lo; no formulário eu povoo todos os TextBox, mas o ComboBox do Estado, nem pensar, quando deveria setar para "SC - Santa Catarina" esta ficando sempre no primeiro item da lista.
O último Código que tentei foi:
private void setTextBoxValue(Control Container, string sEditorName, string sEditorValue)
/container - Objeto que tem os componentes a serem verificados... /
/sEditorName - Nome do objeto desejado... /
/sEditorValue - Valor a ser atribuido ao objeto... /
{
/ Verifica os objetos do container... /
foreach (Control FocusedElement in Container.Controls)
{
/* Verifica se o objeto em foco é um TextBox... */
if (FocusedElement.GetType().Equals(typeof(TextBox)))
.
.
.
/* Verifico se o objeto é um ComboBox... */
else if (FocusedElement.GetType().Equals(typeof(ComboBox)))
{
/* Verifico se é o objeto desejado... */
if (((ComboBox)FocusedElement).Name == sEditorName)
{
/* Busco a String na lista, no caso "SC - Santa Catarina" */
/* a busca me retorna "24", posição de "sEditorValue" na lista */
((ComboBox)FocusedElement).SelectedIndex = ((ComboBox)FocusedElement).FindStringExact(sEditorValue);
break;
}
}Entra no "IF" do ComboBox, faz tudo certinho, mas não funciona, já tentei de várias formas:
((ComboBox)FocusedElement).SelectedValue = ((ComboBox)FocusedElement).FindStringExact(sItemDescription);
ou
var toBeSet = new KeyValuePair<int, string>(iPosition, sItemDescription);
((ComboBox)FocusedElement).SelectedItem = toBeSet;
Até cortei uma cebola ao meio e atirei em cruz por cima dos ombros e nada, não sei mais o que fazer, por favor, me ajudem.
Desde já agradeço!!!!
Discussão (4)
Carregando comentários...