Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

C# - Trabalhando com ComboBox

$
0
0

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

Viewing all articles
Browse latest Browse all 14190

Trending Articles