VB.NET - ComBobox no DataGridView com recurso autocompletar
No artigo de hoje veremos um exemplo de como usar o recurso autocompletar do combobox em um controle DataGridView em uma aplicação Windows Forms usando a linguagem Visual Basic.
Abra o Visual Basic 2010 Express Edition e crie um novo projeto do tipo Windows Application com o nome ComboBox_AutoCompletar;
No formulário form1.vb inclua um controle DataGridView e a seguir vamos incluir no controle duas colunas do tipo ComboBox. Podemos fazer isso de duas formas :
1- A primeira forma é usar os recursos visuais e incluir as duas colunas conforme abaixo:
Selecione a opção Add Column em DataGridView Tasks:
Inclua duas colunas alterando as propriedades name, type e Header text conforme a abaixo:
Columa 1
Coluna 2
|
O resultado final deste processo pode ser visto na figura a seguir:
2- A segunda forma é diretamente via código (esta é a forma que eu vou usar)
1- Versão VB .NET
Para isso no evento Load do formulário defina duas rotinas conforme abaixo:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load carregaCombo1() carregacombo2() End Sub |
2- Versão C#
Na versão C# podemos usar o construtor do formulário:
public Form1() { InitializeComponent(); ComboList1(); ComboList2(); } |
A seguir vamos definir as duas rotinas para criar as colunas e preencher os controles com os valores:
Private Sub carregaCombo1() Dim combo1 As New DataGridViewComboBoxColumn() combo1.HeaderText = "Pais" combo1.Items.Add("Espanha") combo1.Items.Add("Portugal") combo1.Items.Add("Italia") combo1.Items.Add("Brasil") combo1.Items.Add("Argentina") combo1.Items.Add("Alemanha") DataGridView1.Columns.Add(combo1) End Sub |
public void carregaCombo1() { DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn(); combo1.HeaderText = "País"; combo1.Items.Add("Espanha"); combo1.Items.Add("Portugal"); combo1.Items.Add("Italia"); combo1.Items.Add("Brasil"); combo1.Items.Add("Argentina"); combo1.Items.Add("Alemanha"); dataGridView1.Columns.Add(combo1); } |
Private Sub carregaCombo2() Dim combo2 As New DataGridViewComboBoxColumn() combo2.HeaderText = "Tipos de trabalho" combo2.Items.Add("Contabilidade") combo2.Items.Add("Construção") combo2.Items.Add("Finanças") combo2.Items.Add("Educação") combo2.Items.Add("Engenharia") DataGridView1.Columns.Add(combo2) End Sub |
public void carregaCombo2() { DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn(); combo2.HeaderText = "Tipos de Trabalho"; combo2.Items.Add("Contabilidade"); combo2.Items.Add("Construção"); combo2.Items.Add("Finanças"); combo2.Items.Add("Educação"); combo2.Items.Add("Engenharia"); dataGridView1.Columns.Add(combo2); } |
Versão VB .NET | Versão C# |
A seguir vamos definir no evento EditingControlShowing do controle DataGridView o código abaixo :
1 - versão VB .NET
Private Sub DataGridView1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then DirectCast(e.Control, ComboBox).DropDownStyle = ComboBoxStyle.DropDown DirectCast(e.Control, ComboBox).AutoCompleteSource = AutoCompleteSource.ListItems DirectCast(e.Control, ComboBox).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest End If End Sub |
2 - Versão C#
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewComboBoxEditingControl) { ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown; ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems; ((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; } } |
As propriedades AutoCompleteMode e AutoCompleteSource definem um ComboBox que completa automaticamente as seqüências de entrada, comparando o prefixo sendo inserido para os prefixos de todas os valores de cada controle.
Isto pode ser útil para controles ComboBox nos quais URLs, endereços, nomes de arquivos ou comandos serão inseridos com freqüência.
Executando o projeto iremos obter:
Pegue o projeto completo aqui: ComboBox_AutoCompletar.zip (versão VB .NET)
Gálatas 5:16
Digo, porém: Andai pelo Espírito, e não haveis de cumprir a cobiça da carne.Gálatas 5:17
Porque a carne luta contra o Espírito, e o Espírito contra a carne; e estes se opõem um ao outro, para que não façais o que quereis.Referências: