//Cadastra no XML um novo trecho, utiliza Lista por causa do funcionamento do XML public bool CadastrarTrecho(Trecho Trecho, ref List<Trecho> listaTrecho) { if (listaTrecho.Count(r => r.cidadeA.Equals(cidadeA, StringComparison.CurrentCultureIgnoreCase)) > 0 && //Neste 'if'valida os campos preenchidos para cidadeA, cidadeB listaTrecho.Count(r => r.CidadeB.Equals(CidadeB, StringComparison.CurrentCultureIgnoreCase)) > 0 || //e distância. Caso já exista esse trecho (A mesma distância para listaTrecho.Count(r => r.CidadeA.Equals(CidadeB, StringComparison.CurrentCultureIgnoreCase)) > 0 && //os pontos A e B, não dependendo da ordem) a função retorna falso listaTrecho.Count(r => r.CidadeB.Equals(CidadeA, StringComparison.CurrentCultureIgnoreCase)) > 0) // e não é possível cadastrar, sendo apontado no datagridview (tabela) { //de cadastro de trechos onde está o trecho já cadastrado return false; } else { listaTrecho.Add(Trecho); return true; } }
private void botao_CadastrarTrecho(object sender, EventArgs e) { //limpa a seleção do gridview sempre que o botão cadastrar for presionado dataGrid_TrechosCadastrados.ClearSelection(); //Verificação se o usuário preencheu todos os campos corretamente antes do cadastro, caso contrário retorna erro if (textBox_CidadeA.Text != "" && textBox_CidadeB.Text != "" && textBox_Distancia.Text != "") { if (validaStr(textBox_CidadeA.Text) && validaStr(textBox_CidadeB.Text)) { if (validaNum(textBox_Distancia.Text)) { Trecho trechos = new Trecho() { CidadeA = RemoveAcentos(textBox_CidadeA.Text).ToUpper(), CidadeB = RemoveAcentos(textBox_CidadeB.Text).ToUpper(), DistanciaCidades = float.Parse(textBox_Distancia.Text) }; if (trechos.CadastrarTrecho(trechos, ref listaTrecho)) { trechos.SalvarTrechos(ref listaTrecho); Trecho.CarregarTrechos(ref listaTrecho); dataGrid_TrechosCadastrados.DataSource = ListarTodos(); dataGrid_TrechosCadastrados.CurrentCell = dataGrid_TrechosCadastrados.Rows[dataGrid_TrechosCadastrados.Rows.Count - 1].Cells[0]; //limpeza dos campos textBox_CidadeA.Text = null; textBox_CidadeB.Text = null; textBox_Distancia.Text = null; } else { MessageBox.Show(@"Este Trecho já foi cadastrado", @"Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); for (int i = 0; i < dataGrid_TrechosCadastrados.Rows.Count - 1; i++) { //textBox_CidadeA.CharacterCasing = CharacterCasing.Upper; if (dataGrid_TrechosCadastrados.Rows[i].Cells[0].Value.ToString().Equals(textBox_CidadeA.Text.ToUpper()) && dataGrid_TrechosCadastrados.Rows[i].Cells[1].Value.ToString().Equals(textBox_CidadeB.Text.ToUpper())) { dataGrid_TrechosCadastrados.Rows[i].Cells[0].Selected = true; } if (dataGrid_TrechosCadastrados.Rows[i].Cells[0].Value.ToString().Equals(textBox_CidadeB.Text.ToUpper()) && dataGrid_TrechosCadastrados.Rows[i].Cells[1].Value.ToString().Equals(textBox_CidadeA.Text.ToUpper())) { dataGrid_TrechosCadastrados.Rows[i].Cells[0].Selected = true; } } } } else MessageBox.Show(@"Distância deve ser um valor numérico", @"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else MessageBox.Show(@"O nome das cidades não pode conter caracteres especiais", @"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else MessageBox.Show(@"Todos os campos devem ser preenchidos para o cadastro.", @"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); }
private void FormCadTrechos_Load(object sender, EventArgs e) { Trecho = new Trecho(); Trecho.CarregarTrechos(ref listaTrecho); dataGrid_TrechosCadastrados.DataSource = ListarTodos(); dataGrid_TrechosCadastrados.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGrid_TrechosCadastrados.Columns[0].HeaderText = "Cidade A"; dataGrid_TrechosCadastrados.Columns[1].HeaderText = "Cidade B"; dataGrid_TrechosCadastrados.Columns[2].HeaderText = "Distância Entre Cidades"; }