none
Sistema de AutoComplete RRS feed

  • Pergunta

  • Eu estou devenvolvendo meu primeiro programa, e achei interesante colocar AutoComplete no DataGridView, esse sistema fica completando em todas as colunas por exemplo se eu digita 'b' na coluna de nome vai aparece a lista para comple, mais quero que ele complete as palavras somente na coluna "cidade" como eu faço?


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WindowsFormsApplication3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                createRows();
            }

            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {

            }

            private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {

            }

            private void createRows()
            {
                //ADD COLUNAS
                dataGridView1.ColumnCount = 3;
                dataGridView1.Columns[0].Name = "id";
                dataGridView1.Columns[1].Name = "Nome";
                dataGridView1.Columns[2].Name = "Cidade";
            }

            private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                //parte 3
                string header = dataGridView1.Columns[2].HeaderText;
                if(header.Equals("Cidade"))
                {
                    TextBox auto = e.Control as TextBox;

                    if(auto !=null)
                    {
                        //set mode, source
                        auto.AutoCompleteMode = AutoCompleteMode.Suggest;
                        auto.AutoCompleteSource = AutoCompleteSource.CustomSource;
                        AutoCompleteStringCollection data = new AutoCompleteStringCollection();
                        fillItems(data);
                        auto.AutoCompleteCustomSource = data;
                    }
                }
            }
            private void fillItems(AutoCompleteStringCollection data)
            {
                data.AddRange(new String[] { "Montes Claros", "Belo Horizonte", "Janauba", "Juramento", "Bocaiuva" });
            }


        }
    }

    sexta-feira, 15 de julho de 2016 04:13

Respostas

  • Bom dia BrisaLook,

    Obrigado por sua participação no Fórum MSDN.

    Por gentileza, tente adaptar o exemplo abaixo para o que você precisa:

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (dataGridView1.CurrentCell.ColumnIndex == 1)
        {
            TextBox auto = e.Control as TextBox;
            if (prodCode != null)
            {
                auto.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                auto.AutoCompleteCustomSource = ClientListDropDown();
                auto.AutoCompleteSource = AutoCompleteSource.CustomSource;
            }
        }
        else
        {
            TextBox auto = e.Control as TextBox;
            if (auto != null)
            {
                auto.AutoCompleteMode = AutoCompleteMode.None;
            }
        }
    }

    Atenciosamente,

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 15 de julho de 2016 13:48
    Moderador

Todas as Respostas

  • Bom dia BrisaLook,

    Obrigado por sua participação no Fórum MSDN.

    Por gentileza, tente adaptar o exemplo abaixo para o que você precisa:

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (dataGridView1.CurrentCell.ColumnIndex == 1)
        {
            TextBox auto = e.Control as TextBox;
            if (prodCode != null)
            {
                auto.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                auto.AutoCompleteCustomSource = ClientListDropDown();
                auto.AutoCompleteSource = AutoCompleteSource.CustomSource;
            }
        }
        else
        {
            TextBox auto = e.Control as TextBox;
            if (auto != null)
            {
                auto.AutoCompleteMode = AutoCompleteMode.None;
            }
        }
    }

    Atenciosamente,

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 15 de julho de 2016 13:48
    Moderador
  • deu erro por causa do ClientListDropDown prodCode que não foi citado.
    sexta-feira, 15 de julho de 2016 15:14
  • Boa tarde BrisaLook,

    É necessário adaptar o código exemplo à sua realidade.

    Por gentileza, troque o 'prodCode' pelo 'auto'.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 15 de julho de 2016 16:19
    Moderador
  • Boa tarde,

    Devido a falta de resposta do usuário

    essa thread está sendo fechada.

    Se o problema ainda estiver ocorrendo,

    favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 19 de julho de 2016 17:23
    Moderador