none
Problemas ao carregar um ToolStripComboBox RRS feed

  • Pergunta

  • Amigos,

    Tentei usar o seguinte código para carregar um ToolStripComboBox:

    private void CarrClCmB()
            {
                ConBD.AbrBD();
                SqL01 = "SELECT cdpac, NomeC FROM c02pacientes ORDER BY NomeC";
                CmD01 = new MySqlCommand(SqL01, ConBD.CoN);
                DaA01 = new MySqlDataAdapter();
                DaA01.SelectCommand = CmD01;
                DtA01 = new DataTable();
                DaA01.Fill(DtA01);
                ClientSCmB.DataSource = DtA01;
                ClientSCmB.ValueMember = "cdbairro";
                ClientSCmB.DisplayMember = "Bairro";
                ConBD.FecBD();
            }

    Porém acusa o seguinte erro:

    CS1061

    'ToolStripComboBox' não contém uma definição para "DataSource" e não foi possível encontrar nenhum método de extensão "DataSource" que aceite o primeiro argumento do tipo 'ToolStripComboBox'

    Desde já agradeço a ajuda,

    terça-feira, 12 de janeiro de 2021 17:00

Todas as Respostas

  • O control toolStripComboBox é diferente do controle combobox e eles não possuem as mesmas propriedades.

    Para popular seu tscb, converta seu datatable para um array e use o método addRange.

    toolStripComboBox1.Items.AddRange(seuArray);


    Natan

    terça-feira, 12 de janeiro de 2021 18:36
  • Obrigado pela orientação Natan,

    Poderia ser mais específico, pois ainda estou começando a aprender e neste caso há um campo int e um string na tabela do BD. Além do problema de que necessito retornar o ValueMember e o DisplayMember. Só consegui popular com uma coluna do BD. Segue o código:

    private void CarrClCmB()
            {
                ArrayList LiCm = new ArrayList();

                ConBD.AbrBD();
                SqL01 = "SELECT cdpac, NomeC, cdclien FROM c02pacientes WHERE cdclien = @clien ORDER BY NomeC";
                CmD01 = new MySqlCommand(SqL01, ConBD.CoN);
                CmD01.Parameters.AddWithValue("@clien", Program.UsC);
                DaA01 = new MySqlDataAdapter();
                DaA01.SelectCommand = CmD01;
                DtA01 = new DataTable();
                DaA01.Fill(DtA01);

                foreach (DataRow DrA in DtA01.Rows)
                {
                    LiCm.Add(DrA);
                    ClientSCmB.Items.Add(DrA.ItemArray[1]);
                }
                ConBD.FecBD();
            }

    Deixei algum detalhe de lado?

    Desde já agradeço,



    • Editado nelsonmgj terça-feira, 12 de janeiro de 2021 19:52
    terça-feira, 12 de janeiro de 2021 18:43
  • Nelson

    A partir da aí é implementação, você tem que decidir qual controle usar baseado na necessidade da aplicação.

    Por que você precisa do ValueMember e do DisplayMember?

    Se realmente é imprescindível o uso dessas propriedades, por que usar um toolScripComboBox e não um ComboBox convencional?

    Se ainda assim, se você quiser seguir nesse caminho, você deve utilizar de artifícios (pra não dizer, gambiarras) para tratar esses dados, pode ser juntando os dois valores, guardando o valuemember em um outro array, daqui pra frente vai da sua necessidade, conhecimento e criatividade.

    Abraço!


    Natan

    quarta-feira, 13 de janeiro de 2021 12:18
  • OK! Obrigado.

    quarta-feira, 13 de janeiro de 2021 18:36