Usuário com melhor resposta
Dúvidas

Pergunta
-
Boa noite pessoal,
Estou montando uma classe em C#, procurando seguir um exemplo encontrado no MSDN, porém, acho que me perdi em algum momento e agora está dando erros que não consigo resolver. Estou postando o meu código e em seguida os erros.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Windows.Forms; using System.Configuration; namespace Interface.BLL { public class ClMontaTelas { private DataGridView dgvTelaVeiculos = new DataGridView(); public Form1() { this.Form1 += new EventHandler(Form1_Load); } private void Form1_Load(System.Object sender, System.EventArgs e) { MontaTelaVeiculos(); } private void dgvTelaVeiculos_CellFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e) { if (e != null) { if (this.dgvTelaVeiculos.Columns[e.ColumnIndex].Name == "CodigoID") { if (e.Value != null) { try { e.Value = DateTime.Parse(e.Value.ToString()) .ToLongDateString(); e.FormattingApplied = true; } catch (FormatException) { Console.WriteLine("{0} is not a valid date.", e.Value.ToString()); } } } } } private void MontaTelaVeiculos() { this.Controls.Add(dgvTelaVeiculos); dgvTelaVeiculos.ColumnCount = 5; //---------- Intercalando cores entre as linhas no DataGridView ----------------------------------------- dgvTelaVeiculos.RowsDefaultCellStyle.BackColor = Color.White; dgvTelaVeiculos.AlternatingRowsDefaultCellStyle.BackColor = Color.PowderBlue; dgvTelaVeiculos.EnableHeadersVisualStyles = false; dgvTelaVeiculos.ColumnHeadersDefaultCellStyle.ForeColor = Color.Blue; dgvTelaVeiculos.ColumnHeadersDefaultCellStyle.BackColor = Color.Azure; dgvTelaVeiculos.DefaultCellStyle.Font = new Font("Tahoma", 8); dgvTelaVeiculos.Columns[0].HeaderText = "CódigoID"; dgvTelaVeiculos.Columns[0].Width = 70; dgvTelaVeiculos.Columns[1].HeaderText = "Placa do Veiculo"; dgvTelaVeiculos.Columns[1].Width = 115; dgvTelaVeiculos.Columns[2].HeaderText = "Final da Placa"; dgvTelaVeiculos.Columns[2].Width = 100; dgvTelaVeiculos.Columns[3].HeaderText = "Marca do Veiculo"; dgvTelaVeiculos.Columns[3].Width = 200; dgvTelaVeiculos.Columns[4].HeaderText = "Modelo do Veiculo"; dgvTelaVeiculos.Columns[4].Width = 200; dgvTelaVeiculos.Columns[5].HeaderText = "Descricao do Veiculo"; dgvTelaVeiculos.Columns[5].Width = 200; dgvTelaVeiculos.Columns[6].HeaderText = "Número do Chassis"; dgvTelaVeiculos.Columns[6].Width = 200; dgvTelaVeiculos.Columns[7].HeaderText = "Ano do Veiculo"; dgvTelaVeiculos.Columns[7].Width = 120; dgvTelaVeiculos.Columns[8].HeaderText = "Tara do Veiculo"; dgvTelaVeiculos.Columns[8].Width = 120; dgvTelaVeiculos.Columns[9].HeaderText = "Cor Predominante"; dgvTelaVeiculos.Columns[9].Width = 150; dgvTelaVeiculos.Columns[10].HeaderText = "Lotação em Kgs"; dgvTelaVeiculos.Columns[10].Width = 120; dgvTelaVeiculos.Columns[11].HeaderText = "Lotação em M3"; dgvTelaVeiculos.Columns[11].Width = 120; dgvTelaVeiculos.Columns[12].HeaderText = "Número do Renavam"; dgvTelaVeiculos.Columns[12].Width = 150; dgvTelaVeiculos.Columns[13].HeaderText = "Número RNTRC"; dgvTelaVeiculos.Columns[13].Width = 150; dgvTelaVeiculos.Columns[14].HeaderText = "Natureza do Veiculo"; dgvTelaVeiculos.Columns[14].Width = 200; dgvTelaVeiculos.Columns[15].HeaderText = "Tipo de Vinculo"; dgvTelaVeiculos.Columns[15].Width = 200; dgvTelaVeiculos.Columns[16].HeaderText = "Tipo de Veiculo"; dgvTelaVeiculos.Columns[16].Width = 200; dgvTelaVeiculos.Columns[17].HeaderText = "Tipo de Veiculo Para Seguradora"; dgvTelaVeiculos.Columns[17].Width = 200; dgvTelaVeiculos.Columns[18].HeaderText = "Tipo de Veiculo Para CTE"; dgvTelaVeiculos.Columns[18].Width = 200; dgvTelaVeiculos.Columns[19].HeaderText = "Tipo de Carroceria para CTE"; dgvTelaVeiculos.Columns[19].Width = 200; dgvTelaVeiculos.Columns[20].HeaderText = "Tipo de Categoria CIOT"; dgvTelaVeiculos.Columns[20].Width = 300; dgvTelaVeiculos.Columns[21].HeaderText = "Número de Viagens"; dgvTelaVeiculos.Columns[21].Width = 130; dgvTelaVeiculos.Columns[22].HeaderText = "Quilometragem Atual do Veiculo"; dgvTelaVeiculos.Columns[22].Width = 200; dgvTelaVeiculos.Columns[23].HeaderText = "Consumo do Veiculo"; dgvTelaVeiculos.Columns[23].Width = 150; dgvTelaVeiculos.Columns[24].HeaderText = "Data da Última Viagem"; dgvTelaVeiculos.Columns[24].Width = 200; dgvTelaVeiculos.Columns[25].HeaderText = "Data da Última Alteração"; dgvTelaVeiculos.Columns[25].Width = 200; dgvTelaVeiculos.Columns[26].HeaderText = "Número na Frota"; dgvTelaVeiculos.Columns[26].Width = 120; dgvTelaVeiculos.Columns[27].HeaderText = "Estado do Veiculo"; dgvTelaVeiculos.Columns[27].Width = 150; dgvTelaVeiculos.Columns[28].HeaderText = "Municipio do Veiculo"; dgvTelaVeiculos.Columns[28].Width = 200; dgvTelaVeiculos.Columns[29].HeaderText = "Código IBGE do Veiculo"; dgvTelaVeiculos.Columns[29].Width = 200; dgvTelaVeiculos.Columns[30].HeaderText = "Tipo Proprietario"; dgvTelaVeiculos.Columns[30].Width = 160; dgvTelaVeiculos.Columns[31].HeaderText = "Cpf ou Cnpj do Proprietário"; dgvTelaVeiculos.Columns[31].Width = 200; dgvTelaVeiculos.Columns[32].HeaderText = "Observação"; dgvTelaVeiculos.Columns[32].Width = 500; dgvTelaVeiculos.Columns[33].HeaderText = "Número do Usuário"; dgvTelaVeiculos.Columns[33].Width = 150; dgvTelaVeiculos.Columns[34].HeaderText = "Foto do Veiculo"; dgvTelaVeiculos.Columns[34].Width = 150; //--------- Campos Formatados a Direita ------------------- // dgvNaturezas.Columns[5].DefaultCellStyle.Format = "c"; dgvTelaVeiculos.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[8].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[10].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[11].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[12].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[13].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[21].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[22].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[23].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[29].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[33].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.Columns[15].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvTelaVeiculos.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dgvTelaVeiculos.SelectionMode = DataGridViewSelectionMode.FullRowSelect; } } }
Respostas
-
Garibaldo,
Se pretende que sua aplicação tenha módulos WinForms e ASP.Net no futuro, seu projeto Class Library que será compartilhado entre estes dois módulos não deve ter dependências de plataformas misturadas (você pode até fazer funcionar, mas é uma prática ruim).
Sua Class Library comum deve trabalhar num nível de abstração de forma que os módulos WinForms e ASP.Net a utilize, sem ter que adicionar referências para controles de tela ou classes específicas de WinForms ou ASP.Net.
Quando seu código tiver atingido certa maturidade poderá estudar a implementação do padrão Injeção de Dependência, mas isto sugiro fazer mais adiante para não acrescentar complexidade desnecessária ou tornar as entregas de seu projeto mais lentas.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 27 de novembro de 2017 12:53
Todas as Respostas
-
Para adicionar um evento Form Load o código deveria ser:
this.Form1.Load += new EventHandler(Form1_Load);
No entanto, vi que você criou uma classe separada e está tentando utilizá-la como se fosse uma classe que herda a classe Form, o que está errado.
Além disso, pelo namespace vi que esta classe é da sua BLL (Business Logic Layer), então você não deveria fazer referências a componentes de tela (UI) através deste projeto, é uma prática incorreta.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Editado Juliano Nunes Silva Oliveira domingo, 19 de novembro de 2017 00:15
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 20 de novembro de 2017 07:42
-
-
Sem mais detalhes do projeto não dá pra te ajudar. Se for um projeto apenas de estudo, envie para o GitHub ou outro repositório de código fonte (Bitbucket, Visual Studio Online, etc).
Também explique melhor o que quer fazer, se são projetos separados, etc. Com as informações que deu, não dá pra saber quase nada.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Boa noite Juliano.
O meu projeto está sendo desenvolvido em Camadas(Aprendi dessa forma). Uma camada onde defino os meus forms. Uma camada onde eu faço algumas consistências nos campos e uma camada onde eu faço a conexão com o banco de dados. Na Camada onde eu faço as consistências de Campos eu também deixei para criar as classes que serão utilizadas pelo Projeto. Ex. Assinatura digital, Validação de Cnpj/Cpf/Pis, Personalização de Butões, etc,..
Estou desenvolvendo um projeto de CTe(Conhecimento Eletronico). O meu desenvolvimento hoje é para desktop, porém, eu gostaria de desenvolver classes que no futuro eu possa está acessando-as pelo ASP.net. Como por Exemplo; os datagrides do projeto. Quando eu faço uma consulta no Banco de Dados e alimento o meu datagrid eu gostaria que aparecesse na tela, não o nome do meu campo, EX: Ano_Veiculo Gostaria que aparecesse "Ano do Veiculo".
Eu tenho uma tabela chamada Filial. Praticamente todos os meus programas leem essa tabela. Então, em todos os programas eu tenho a descrição do datagrid. Vou te dar um exemplo via código:
Toodos os meus programas que lêem a Tabela Filial eu estou definindo essa rotina.
Garibaldo
private void Mostra_TabelaFiliais() { //---------- Intercalando cores entre as linhas no DataGridView ----------------------------------------- dgvFiliais.RowsDefaultCellStyle.BackColor = Color.White; dgvFiliais.AlternatingRowsDefaultCellStyle.BackColor = Color.Aquamarine; //---------- Definição do Cabeçalho e tamanho de cada Campo --------------------------------------------- dgvFiliais.Columns[0].HeaderText = "CódigoID"; dgvFiliais.Columns[0].Width = 70; dgvFiliais.Columns[1].HeaderText = "Codigo Filial"; dgvFiliais.Columns[1].Width = 120; dgvFiliais.Columns[2].HeaderText = "Código Abreviado"; dgvFiliais.Columns[2].Width = 150; dgvFiliais.Columns[3].HeaderText = "Tipo Documento"; dgvFiliais.Columns[3].Width = 140; dgvFiliais.Columns[4].HeaderText = "Cnpj/Cpf Filial"; dgvFiliais.Columns[4].Width = 150; dgvFiliais.Columns[5].HeaderText = "Nome da Filial"; dgvFiliais.Columns[5].Width = 400; dgvFiliais.Columns[6].HeaderText = "Nome Fantasia"; dgvFiliais.Columns[6].Width = 400; dgvFiliais.Columns[7].HeaderText = "Cep da Filial"; dgvFiliais.Columns[7].Width = 120; dgvFiliais.Columns[8].HeaderText = "Endereço da Filial"; dgvFiliais.Columns[8].Width = 400; dgvFiliais.Columns[9].HeaderText = "Número"; dgvFiliais.Columns[9].Width = 80; dgvFiliais.Columns[10].HeaderText = "Complemento do Endereço"; dgvFiliais.Columns[10].Width = 300; dgvFiliais.Columns[11].HeaderText = "Bairro da Filial"; dgvFiliais.Columns[11].Width = 300; dgvFiliais.Columns[12].HeaderText = "Codigo IBGE"; dgvFiliais.Columns[12].Width = 120; dgvFiliais.Columns[13].HeaderText = "Municipio da Filial"; dgvFiliais.Columns[13].Width = 300; dgvFiliais.Columns[14].HeaderText = "Estado"; dgvFiliais.Columns[14].Width = 80; dgvFiliais.Columns[15].HeaderText = "Telefone 1"; dgvFiliais.Columns[15].Width = 100; dgvFiliais.Columns[16].HeaderText = "Telefone 2"; dgvFiliais.Columns[16].Width = 100; dgvFiliais.Columns[17].HeaderText = "Telefone 3"; dgvFiliais.Columns[17].Width = 100; dgvFiliais.Columns[18].HeaderText = "Email"; dgvFiliais.Columns[18].Width = 300; dgvFiliais.Columns[19].HeaderText = "Usuário"; dgvFiliais.Columns[19].Width = 80; dgvFiliais.Columns[20].HeaderText = "Observações"; dgvFiliais.Columns[20].Width = 500; //--------- Campos Formatados a Esquerda -------------------- dgvFiliais.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvFiliais.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvFiliais.Columns[09].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; dgvFiliais.Columns[19].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; //--------- Campos Cntralizados -------------------- dgvFiliais.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; dgvFiliais.Columns[14].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter; //--------- Campos Formatados a Direita ------------------- // dgvFiliais.Columns[5].DefaultCellStyle.Format = "c"; dgvFiliais.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dgvFiliais.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
-
Boa noite Garibaldo,
Uma das coisas o Juliano já identificou que é o método de carregamento do form.
this.Form1 += new EventHandler(Form1_Load);
Para
this.Load += new EventHandler(Form1_Load);
Outra coisa você está definindo um limite de 5 colunas -> dgvTelaVeiculos.ColumnCount = 5;
e está tentando alimentar informações para 5,6,7,8 .. 34 ? você não irá conseguir.
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
Rafael Almeida
Senior Developer .NET C#
Development Leader at JAMSOFT Informática
Criador e Mantenedor do Entity Framework Core for Firebird
Contribuidor do Entity Framework Core
Email: ralms@ralms.net
Blog - GitHub - LinkedIn - Twitter- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 20 de novembro de 2017 07:42
-
-
Garibaldo,
Se pretende que sua aplicação tenha módulos WinForms e ASP.Net no futuro, seu projeto Class Library que será compartilhado entre estes dois módulos não deve ter dependências de plataformas misturadas (você pode até fazer funcionar, mas é uma prática ruim).
Sua Class Library comum deve trabalhar num nível de abstração de forma que os módulos WinForms e ASP.Net a utilize, sem ter que adicionar referências para controles de tela ou classes específicas de WinForms ou ASP.Net.
Quando seu código tiver atingido certa maturidade poderá estudar a implementação do padrão Injeção de Dependência, mas isto sugiro fazer mais adiante para não acrescentar complexidade desnecessária ou tornar as entregas de seu projeto mais lentas.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 27 de novembro de 2017 12:53
-
Bom dia,
Por falta de retorno essa thread está sendo encerrada.
Se necessário, favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
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.