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;
using static CalculoSalario.Empleado;
using static CalculoSalario.Salario;
namespace CalculoSalario
{
public partial class Form1 : Form
{
// Declarar las instancias como variables de clase
private Empleado miEmpleado;
private Salario miSalario;
public Form1()
{
InitializeComponent();
// Inicializar las instancias aquí
miEmpleado = new Empleado(); //instancia de la clase Empleado
miSalario = new Salario(); //objeto de la clase Salario
}
private void Form1_Load(object sender, EventArgs e)
{
// Las instancias ya están inicializadas en el constructor
}
private void btnsalir_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnguardar_Click(object sender, EventArgs e)
{
/*los valores obtenidos en los textbox son pasados a los atributos por medio de sus
propiedades, note que mandamos a llamar a través de los objetos creados*/
miEmpleado.Nombre = txtnombre.Text;
miEmpleado.Identificacion = txtidentificacion.Text;
miEmpleado.SalarioDiario = Convert.ToDecimal(txtdiario.Text);
miSalario.DiasLaborados = int.Parse(txtdias.Text);
MessageBox.Show("Datos ingresados con éxito");
}
private void btncalcular_Click(object sender, EventArgs e)
{
/*Enviaremos el valor de salario calculado al textbox respectivo, como es un dato
numérico debemos convertirlo a texto, el cálculo lo hace el método de la clase salario*/
txtsalario.Text = Convert.ToString(miSalario.CalcularSalario(miSalario.DiasLaborados,
miEmpleado.SalarioDiario));
}
private void btnnuevo_Click(object sender, EventArgs e)
{
//limpiando todo para ingresar nuevos datos
txtnombre.Clear();
txtidentificacion.Clear();
txtdias.Clear();
txtdiario.Clear();
txtsalario.Clear();
txtnombre.Focus(); //regresa el cursor al textbox del nombre
}
}
}
CLASE
EMPLEADO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CalculoSalario
{
public class Empleado //publica para que pueda ser usada en cualquier instancia del proyecto
{
private string nombre; //primer atributo
public string Nombre //propiedad asociada al atributo nombre
{
get { return nombre; }
set { nombre = value; }
}
private string identificacion; //segundo atributo
public string Identificacion //propiedad asociada al atributo identificacion
{
get { return identificacion; }
set { identificacion = value; }
}
private decimal salarioDiario; //tercer atributo
public decimal SalarioDiario //propiedad asociada al atributo salarioDiario
{
get { return salarioDiario; }
set { salarioDiario = value; }
}
}
}
CLASE
SALARIO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CalculoSalario
{
public class Salario //publica para que pueda ser usada en cualquier instancia del proyecto
{
private int diasLaborados; //atributo
public int DiasLaborados //propiedad del atributo
{ get; set; }
//método para calcular salario
public decimal CalcularSalario(int diaslab, decimal valordia)
{
decimal totalsalario = diaslab * valordia;
return totalsalario;
}
}
}
EJEMPLO 2:
Realizaremos un ejercicio para llevar una agenda de contactos.
1. Crearemos un nuevo proyecto de Windows Form, el nombre es AgendaPersonas. El
formulario lucirá como el de la imagen.
Form1
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace AgendaPersonas
{
public partial class Form1 : Form
{
private List<Contacto> contactos;
public Form1()
{
InitializeComponent();
this.Load += new System.EventHandler(this.Form1_Load);
this.dgvcontactos.DoubleClick += new System.EventHandler(this.dgvcontactos_DoubleClick);
}
private void Form1_Load(object sender, EventArgs e)
{
// Inicializar la lista de contactos
contactos = new List<Contacto>();
// Asignar la lista de contactos como fuente de datos del DataGridView
dgvcontactos.DataSource = contactos;
}
private void btnguardar_Click(object sender, EventArgs e)
{
// Crear un nuevo contacto y agregarlo a la lista
Contacto nuevoContacto = new Contacto
{
Nombre = textBoxNombre.Text,
Apellido = textBoxApellido.Text,
Telefono = textBoxTelefono.Text,
Correo = textBoxcorreo.Text
};
// Verificar que todos los campos están llenos
if (string.IsNullOrWhiteSpace(nuevoContacto.Nombre) ||
string.IsNullOrWhiteSpace(nuevoContacto.Apellido) ||
string.IsNullOrWhiteSpace(nuevoContacto.Telefono) ||
string.IsNullOrWhiteSpace(nuevoContacto.Correo))
{
MessageBox.Show("Por favor, complete todos los campos.");
return;
}
contactos.Add(nuevoContacto);
// Actualizar el DataGridView
dgvcontactos.DataSource = null;
dgvcontactos.DataSource = contactos;
// Limpiar los campos de texto
limpiar();
}
private void btneliminar_Click(object sender, EventArgs e)
{
// Verificar si hay filas seleccionadas
if (dgvcontactos.SelectedRows.Count > 0)
{
// Obtener la fila seleccionada
DataGridViewRow selectedRow = dgvcontactos.SelectedRows[0];
Contacto contactoSeleccionado = selectedRow.DataBoundItem as Contacto;
// Eliminar el contacto de la lista
contactos.Remove(contactoSeleccionado);
// Actualizar el DataGridView
dgvcontactos.DataSource = null;
dgvcontactos.DataSource = contactos;
}
else
{
MessageBox.Show("No hay filas seleccionadas para eliminar.");
}
}
public void limpiar()
{
// Limpiar los campos de texto
textBoxNombre.Text = string.Empty;
textBoxApellido.Text = string.Empty;
textBoxTelefono.Text = string.Empty;
textBoxcorreo.Text = string.Empty;
}
private void dgvcontactos_DoubleClick(object sender, EventArgs e)
{
// Verificar si hay filas seleccionadas
if (dgvcontactos.SelectedRows.Count > 0)
{
// Obtener la fila seleccionada
DataGridViewRow selectedRow = dgvcontactos.SelectedRows[0];
// Realizar las operaciones necesarias con la fila seleccionada
string nombre = selectedRow.Cells["Nombre"].Value.ToString();
string apellido = selectedRow.Cells["Apellido"].Value.ToString();
string telefono = selectedRow.Cells["Telefono"].Value.ToString();
string correo = selectedRow.Cells["Correo"].Value.ToString();
// Mostrar los valores en los campos de texto
textBoxNombre.Text = nombre;
textBoxApellido.Text = apellido;
textBoxTelefono.Text = telefono;
textBoxcorreo.Text = correo;
}
else
{
MessageBox.Show("No hay filas seleccionadas.");
}
}
private void Dgvcontactos_DoubleClick(object sender, EventArgs e)
{
// Verificar si hay filas seleccionadas
if (dgvcontactos.SelectedRows.Count > 0)
{
// Obtener la fila seleccionada
DataGridViewRow selectedRow = dgvcontactos.SelectedRows[0];
// Realizar las operaciones necesarias con la fila seleccionada
if (selectedRow != null)
{
string nombre = selectedRow.Cells["Nombre"].Value?.ToString() ?? string.Empty;
string apellido = selectedRow.Cells["Apellido"].Value?.ToString() ?? string.Empty;
string telefono = selectedRow.Cells["Telefono"].Value?.ToString() ?? string.Empty;
string correo = selectedRow.Cells["Correo"].Value?.ToString() ?? string.Empty;
// Mostrar los valores en los campos de texto
textBoxNombre.Text = nombre;
textBoxApellido.Text = apellido;
textBoxTelefono.Text = telefono;
textBoxcorreo.Text = correo;
}
}
else
{
MessageBox.Show("No hay filas seleccionadas.");
}
}
private void btnlimpiar_Click(object sender, EventArgs e)
{
{
// Verificar si hay filas seleccionadas
if (dgvcontactos.SelectedRows.Count > 0)
{
// Obtener la fila seleccionada
DataGridViewRow selectedRow = dgvcontactos.SelectedRows[0];
if (selectedRow != null)
{
Contacto contactoSeleccionado = selectedRow.DataBoundItem as Contacto;
// Eliminar el contacto de la lista
if (contactoSeleccionado != null)
{
contactos.Remove(contactoSeleccionado);
// Actualizar el DataGridView
dgvcontactos.DataSource = null;
dgvcontactos.DataSource = contactos;
}
}
}
else
{
MessageBox.Show("No hay filas seleccionadas para eliminar.");
}
}
}
private void dgvcontactos_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
public class Contacto
{
public string Nombre { get; set; }
public string Apellido { get; set; }
public string Telefono { get; set; }
public string Correo { get; set; }
}
Clase CONTACTO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AgendaPersonas
{
internal class Contactos
{
//atributos
private string nombre;
private string apellido;
private string telefono;
private string correo;
//métodos
public string Nombre
{
get { return nombre; }
set { nombre = value; }
}
public string Apellido
{
get { return apellido; }
set { apellido = value; }
}
public string Telefono
{
get { return telefono; }
set { telefono = value; }
}
public string Correo
{
get { return correo; }
set { correo = value; }
}
}
}