Usuário com melhor resposta
Aplicar uma máscara em um DataGridView (C# - Windows Forms) em tempo de execução

Pergunta
-
Olá pessoal, existe a possibilidade de se aplicar uma máscara em uma célula de um datagrid em tempo de execução?
É que tenho um cadastro com 3 tipos de contato: TELEFONE, CELULAR e E-MAIL. eu carrego um DataTable e alimento o datagrid com ele... Só que preciso levar em consideração o tipo de contato na hora de setar a célula correspondente:
Se for 1 - TELEFONE, setar o campo contato para máscara '(00)0000-0000'
Se for 2 - CELULAR, setar o campo contato para máscara '(00)00000-0000'
Se for 3 - E-MAIL, setar o campo contato para não usar máscara
//Carregamento do DataGrid
public void CarregarDataGridContato(int pIDPessoa) { PessoaContatoBLL pessoaContatoBLL = new PessoaContatoBLL(); dgContato.DataSource = pessoaContatoBLL.ConsultarPessoaContatoTodos(pIDPessoa); }
- Editado Jalber Romano domingo, 13 de março de 2016 18:19
Respostas
-
Jalber,
teve dificuldades em aplicar aquela solução do link que te passei ?
Olha esse código e toma como exemplo, acabei de fazer e está funcionando perfeitamente, tem um dataGridView na tela.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } class Contatos { public string Tipo { get; set; } public string Contato { get; set; } public string Ramal { get; set; } } private void Form1_Load(object sender, EventArgs e) { var list = new List<Contatos>() { new Contatos {Tipo = "TELEFONE", Contato = "8599999999", Ramal = "12"}, new Contatos {Tipo = "CELULAR", Contato = "85989999999", Ramal = "12"}, new Contatos {Tipo = "EMAIL", Contato = "teste@teste.com.br", Ramal = "12"}, }; var bindingList = new BindingList<Contatos>(list); var source = new BindingSource(bindingList, null); dataGridView1.DataSource = source; } private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == 1 && e.RowIndex != dataGridView1.NewRowIndex) { if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value.ToString() == "TELEFONE") e.Value = string.Format("{0:(##) ####-####}", Int64.Parse(e.Value.ToString())); if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value.ToString() == "CELULAR") e.Value = string.Format("{0:(##) #####-####}", Int64.Parse(e.Value.ToString())); } } }
Att,
Antero Marques
- Marcado como Resposta Jalber Romano terça-feira, 15 de março de 2016 00:04
Todas as Respostas
-
Jalber,
teve dificuldades em aplicar aquela solução do link que te passei ?
Olha esse código e toma como exemplo, acabei de fazer e está funcionando perfeitamente, tem um dataGridView na tela.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } class Contatos { public string Tipo { get; set; } public string Contato { get; set; } public string Ramal { get; set; } } private void Form1_Load(object sender, EventArgs e) { var list = new List<Contatos>() { new Contatos {Tipo = "TELEFONE", Contato = "8599999999", Ramal = "12"}, new Contatos {Tipo = "CELULAR", Contato = "85989999999", Ramal = "12"}, new Contatos {Tipo = "EMAIL", Contato = "teste@teste.com.br", Ramal = "12"}, }; var bindingList = new BindingList<Contatos>(list); var source = new BindingSource(bindingList, null); dataGridView1.DataSource = source; } private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == 1 && e.RowIndex != dataGridView1.NewRowIndex) { if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value.ToString() == "TELEFONE") e.Value = string.Format("{0:(##) ####-####}", Int64.Parse(e.Value.ToString())); if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value.ToString() == "CELULAR") e.Value = string.Format("{0:(##) #####-####}", Int64.Parse(e.Value.ToString())); } } }
Att,
Antero Marques
- Marcado como Resposta Jalber Romano terça-feira, 15 de março de 2016 00:04
-
Obrigado pelo retorno Antero. Tive sim... Fiz alguns ajustes, mas aquela maneira de se fazer é adaptada para uma situação onde ficam vários zeros e eles vão sendo substituídos e também a digitação começa da direita para a esquerda... No meu caso não ajudou muito não.
Vou testar essa exemplo que você me passou e te retorno em breve.
Muito obrigado :)
- Marcado como Resposta Jalber Romano terça-feira, 15 de março de 2016 00:04
- Não Marcado como Resposta Jalber Romano terça-feira, 15 de março de 2016 00:04
-
Obrigado Antero, funcionou!!
Obrigado.
- Editado Jalber Romano terça-feira, 15 de março de 2016 00:51