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!!!!