PROGRAMACION II - PR26-2
Topic outline
- BIENVENIDA
BIENVENIDA
¡Bienvenidos a todos a Programación II!
Ya superaron los fundamentos, y ahora es momento de subir el nivel. Este semestre nuestro aliado es Visual C#. Vamos a explorar el desarrollo orientado a objetos, interfaces gráficas y la lógica detrás de aplicaciones profesionales.
¿Por qué C#? Porque es el motor de grandes soluciones en el mundo empresarial y de videojuegos. Prepárense para ensuciarse las manos con código, realizar proyectos prácticos y, sobre todo, aprender haciendo.
Mi puerta (y mi chat) siempre estarán abiertos para resolver dudas. ¡Vamos a hacer de este semestre algo increíble!
- COMPETENCIA ESPECíFICA
- DATOS DEL DOCENTE:This topic
DATOS DEL DOCENTE:
Profesor: MINERVA TABORDA
Sección Según la Especialidad: PROGRAMACIÒN II
Semestre: SEGUNDO
Datos de Contacto:
* Número de Teléfono: 04244329119
* WhatsApp: 04244329119
* Correo: TABORAMINERVA@GMAIL.COM
HORARIO DE ASESORÍA:
Asesoría: Explicación para actividades o contenidos asignados.
– De 3:00 AM A 7:00 PM
Observación:
- DISTRIBUCIÓN DEL PRIMER SEMESTRE
DISTRIBUCIÓN DEL PRIMER SEMESTRE
EL DOCENTE asignara en esta sección el formato de planificación de la asignatura
- I CORTE O MODULO: LENGUAJE Visual C#
I CORTE O MODULO: LENGUAJE Visual C#

C# es un lenguaje de programación moderno, innovador, de código abierto, multiplataforma orientado a objetos y uno de los 5 principales lenguajes de programación de GitHub.
Si usas Visual Studio Code para comenzar a desarrollar con C# simplemente necesitarás crear una carpeta y trabajar en ella, creando tus archivos con código en C#, que tendrán la extensión ".cs".
Si usas Visual Studio 2012
1.- Creación de un Proyecto en C#
- Nuevo Proyecto: Menú
Archivo>Nuevo Proyecto>Visual C#>Windows Forms ApplicationoConsole Application.windows forms para dieño de formulario y consola application para trabajar con la Interfaz de Línea de Comandos
- Estructura: El archivo
Program.cscontiene el métodoMain(punto de entrada). - Diseño: Arrastrar controles desde la barra de herramientas al Formulario. esta se encuentra del lado izquierdo (
Form1.cs [Design]). - Barra de propiedades de controles, esta se encuentra del lado derecho y te permite cambiar editar os controles (color, tamaño, tipo de letra y lo mas importante darle un nombre para poderlos manipular dentro de nuestro código de funcionamiento.
Controles Principales
Label: son etiquetas en una ventana para proporcionar información al usuario, como títulos, descripciones o mensajes, sin permitir interacción directa de edición por parte del usuario.
Texbox: (cuadro de texto) es un componente o control que puedes usar para introducir datos por el teclado y mostrar datos.
Button: son los que realizan la acciòn ejemplo cuando entrar al correo introduce tu usuario, una contgraceña y luego pulsas el boton aceptar que te lleva al correo.
Datos fundamentales para programar en C#
1 tipo de datos de una variable en #
Los tipos de coma flotante pueden representar números con componentes fraccionales. Existen dos clases de tipos de coma flotante: float y double. El tipo double es el más utilizado porque muchas funciones matemáticas de la biblioteca de clases de C# usan valores double. Quizá, el tipo de coma flotante más interesante de C# es decimal, dirigido al uso de cálculos monetarios.
Los caracteres en C# no tienen un tamaño de 8 bits como en otros muchos lenguajes de programación, sino que usa un tamaño de 16 bits llamado Unicode al cual se le llama char.
Practiquemos:
Mi primer Programa en C#
crea un nuevo proyecto
Arrastar al formulario un label, textBox y un Button
selecciona el label y en las propiedades que se encuentran a la derecha ubica el TEXT y coloca allí (ingresa tu nombre)
para que se vea dentro del label.
luego selecciona el button y dale doble clic para que te abra la ventana de codificar para accionar el button
Coloca el siguiente codigo:
string NOMBRE = textBox1.Text;
MessageBox.Show("Binvenido a Programacion I"+ " "+ NOMBRE);
finalmente compilamos dando un clic a la flecha verde que e encuentra en la barra de herramientas de visual
Agrego mi nomgre al TextBox y pulso elboton aceptar aparece una ventana con mi mensaje de bienvenida y el nombre
Explico el còdigo
declaro una variable(nombre) como String para obnener los datos de mi TextBox
muestro con un MessageBox.Show
coloco un mensaje "" un espacio " " para separar y la variable nombre finalmente coloco un ;
todas las lìneas en C# terniman con ;
- Estructura: El archivo
- Semana No. 2 y 3:
Semana No. 2 y 3:
Condicionales En visual
C Sharp
Las condicionales permiten que el programa tome decisiones y ejecute diferentes bloques de código según se cumplan o no ciertas condiciones.
sintaxis:
If (condición) { // si la condición abro una llave
instrucciones; // instrucciones a verdadera
} // cierro llave
else { // de lo contrario abro nuevamente llave
instrucción 2 ; // instrucción falsa
{ // cierro llave
Ejemplo de un Ejercicio utilizando condicionales simples
Diseño del formulario:
- Un
Labeletiqueta con el texto (ingresa tu edad)
- Un
TextBoxpara ingresar la edad. - Un
Buttonpara evaluar. - Un
Labe2para mostrar el resultado. - Uso de if /else.
Código en el button:
if (edad >= 18) {
Label2.Text = "usted es mayor de edad.";
}
else
{
label2.Text = "Eres menor de edad.";
}
Condicionales Anidadas
una condicional anidada es cuando dentro de una estructura condicional (
if,else ifoelse) colocas otra estructura condicional para evaluar más condiciones de forma jerárquica.Diseño del Formulario
- Un
TextBoxpara ingresar sueldo. - Un
Buttonpara evaluar. - Un
Labelpara mostrar el resultado. - Uso de if / else if / else.
if (sueldo >= 1500 && sueldo <= 900) // Validar rango
porcentaje= sueldo *0.2 ; // aplico una deducción al sueldo del 2%
Totalpagar = sueldo-porcentaje; // resto la deducción del sueldo para obtener total a pagar
label2.Text: "el total a pagar es:" +" " + Totalpagar; // muestro un mensaje con el sueldo
}
else // de lo contrario
{
if (sueldo >= 1600) { // vuelvo a preguntado por otra condición
porcentaje= sueldo *0.3; // aplico una deducción al sueldo del 3%
Totalpagar = sueldo-porcentaje; // resto la deducción del sueldo para obtener total a pagar
label2.Text: "el total a pagar es:" +" " + Totalpagar;
Ejercicio propuestos FECHA DE ENTREGA 05/05/2026
1- Un postulante a un empleo, realiza un test de capacitación, se obtuvo la siguiente información: cantidad total de preguntas que se le realizaron y la cantidad de preguntas que contestó correctamente. Se pide confeccionar un programa que ingrese los dos datos por teclado e informe el nivel del mismo según el porcentaje de respuestas correctas que ha obtenido, y sabiendo que:
Nivel máximo: Porcentaje>=90%. Nivel medio: Porcentaje>=75% y <90%. Nivel regular: Porcentaje>=50% y <75%. Fuera de nivel: Porcentaje<50%.2.- carga una aplicación para un Sistema de descuentos en una tienda
Un supermercado aplica descuentos según el monto de la compra y si el cliente es miembro VIP.
Reglas:
- Si el monto es mayor a 100 USD:
- Si es VIP, el descuento es 20%.
- Si no es VIP, el descuento es 10%.
- Si el monto es entre 50 y 100 USD:
- Si es VIP, el descuento es 5%.
- Si no es VIP, no hay descuento.
- Si el monto es menor a 50 USD, no hay descuento.
- Un
- Semana No. 3: Desde DD/MM/AA Hasta DD/MM/AA
Semana No. 3: Desde DD/MM/AA Hasta DD/MM/AA
El CheckBox: Es un control que permite al usuario seleccionar una o más opciones de varias disponibles.
RadioButton: Control que permite al usuario escoger solo una de varias opciones.
Observe como se ven en el formulario y también observe que los checkbox están seleccionados todos, en cambio los RadioButton son mutuamente excluyentes por lo que solo uno de ellos puede ser elegido.
Estos controles generalmente se agrupan en un control contenedor llamado GroupBox y de esa manera se pueden poner varias opciones en un solo formulario, por supuesto que agrupando los radioButton en varios GroupBox
Ejercicio con Checkbox
Disponer un control Label que muestre el siguiente mensaje: "Esta de acuerdo con las normas del servicio?", luego un CheckBox y finalmente un objeto de tipo Button desactivo (propiedad Enabled con false). Cuando se tilde el CheckBox debemos activar el botón (para esto debemos responder al evento)

un label
un textbox
un button
private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked == true) { button1.Enabled = true; } else { button1.Enabled = false; }(El checked changed en evento (investiga como colocar los eventos a los controles))Aquí puedes ver como trabajar los eventos.
https://www.bing.com/ck/a?!&&p=d9908e4ca8a5092349f042c72002647735826b0df0226a1230d3d13134973364JmltdHM9MTc3Nzg1MjgwMA&ptn=3&ver=2&hsh=4&fclid=0754cf7e-35cd-6470-2482-db83345d656a&psq=controles+radiobutton+en+lenguaje+de+programacion++CSharp++windows+foem+visual+studio+2012&u=a1aHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcvYy1zaGFycC9yYWRpb2J1dHRvbi1pbi1jLXNoYXJwLw
Debemos implementar el evento CheckedChange del objeto checkBox1 (preguntamos si el CheckBox se encuentra seleccionado o no, en caso de estar seleccionado activamos el botón asignando a la propiedad Enabled el valor true):
Ejemplo Radiobutton

>Agrega un button
Código botton
if (radioButton1.checked ==true){
MessageBox.Show("usted ha seleccionado el radiobutton1");
}
else
{
if (radioButton2.checked ==true){
MessageBox.Show("usted ha seleccionado el radiobutton2");
}
else
{
if (radioButton3.checked ==true){
MessageBox.Show("usted ha seleccionado el radiobutton3");
}
else
{
- Evento
CheckedChanged: Detecta cuando el primerRadioButtoncambia de estado. - Si está seleccionado (
Checked == true): Desactiva (Enabled = false) los demás. - Si se desmarca: Los vuelve a activar.
el codigo seria este:
InitializeComponent(); // Asociar el evento CheckedChanged al primer
RadioButton radioButton1.CheckedChanged += RadioButton1_CheckedChanged;
} // Evento que se dispara cuando cambia el estado del primer
RadioButton private void RadioButton1_CheckedChanged(object sender, EventArgs e) {
try
{
if (radioButton1.Checked) { // Desactivar los otros RadioButton
radioButton2.Enabled = false;
radioButton3.Enabled = false;
}
else
{
// Volver a activarlos si se desmarca el primero
radioButton2.Enabled = true;
radioButton3.Enabled = true;
}
}
catch (Exception ex) {
MessageBox.Show("Ocurrió un error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
- Evento
- Semana No. 5: Desde 05/05/26 Hasta 06/05/26
Semana No. 5: Desde 05/05/26 Hasta 06/05/26
Ciclos En C Sharp y control, Lisbox
un ciclo o bucle es una estructura de control que permite ejecutar repetidamente un bloque de código mientras se cumpla una condición o durante un número determinado de veces.
Un ListBox es un control gráfico para mostrar una lista de elementos, permitiendo al usuario seleccionar uno o varios de ellos.
El ListBox puede manejar listas largas de elementos. Si el número de elementos excede el espacio visible, se agrega automáticamente una barra de desplazamiento. Además, se puede configurar para mostrar los elementos en una sola columna o en varias columnas, dependiendo de la propiedad.
forSe usa cuando sabemos exactamente cuántas veces queremos repetir el código.
ejemplo tablas de multiplicar
Diseño del Form1
Label: introduzca un número del 1 al 10
textBox:
un Listbox
un Button con el signo de multiplicar.
Código del button
private void buton1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear(); // Limpiar resultados previos
// Validar que el usuario ingresó un número entero
if (!int.TryParse(txtNumero.Text, out int numero)) {
MessageBox.Show("Por favor, ingrese un número entero válido.", "Entrada inválida", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// Generar tabla de multiplicar usando ciclo for
for (int i = 1; i <= 10; i++) {
int resultado = numero * i;
listBox1.Items.Add($"{numero} x {i} = {resultado}");
}
}
- Semana No. 6: Desde DD/MM/AA Hasta DD/MM/AA
Semana No. 6: Desde DD/MM/AA Hasta DD/MM/AA
C# For bucle
Cuando sepa exactamente cuántas veces desea recorrer un bloque de código, utilice el bucle
foren lugar de unwhilebucle:Sintaxis
for (declaración 1; declaración 2; declaración 3) { // bloque de código a ejecutar }La Declaración 1 se ejecuta (una vez) antes de la ejecución del bloque de código.
La Declaración 2 define la condición para ejecutar el bloque de código.
La Declaración 3 se ejecuta (cada vez) después de que se haya ejecutado el bloque de código.
El siguiente ejemplo imprimirá los números del 0 al 4:
Ejemplo
for (int i = 0; i < 5; i++) { MessageBox.Show(i); }La declaración 1 establece una variable antes de que comience el ciclo (
int i = 0).
La declaración 2 define la condición para que se ejecute el bucle (idebe ser menor que5). Si la condición estrue, el ciclo comenzará de nuevo, si esfalse, el ciclo finalizará.
La declaración 3 aumenta un valor (i++) cada vez que se ejecuta el bloque de código en el bucle.finalmente mostramos con un MessageBox para mostrar los números del 1 al 4
C# While bucle
El bucle
whilerecorre un bloque de código siempre que una condición especificada seaTrue:Sintaxis
while (condición) { // bloque de código a ejecutar }En el siguiente ejemplo, el código del bucle se ejecutará una y otra vez, siempre que una variable (i) sea menor que 5:
Ejemplo
int i = 0; while (i < 5) {
i++; }MessageBox.Show(i);El bucle Do/While
El bucle
do/whilees una variante del buclewhile. Este bucle ejecutará el bloque de código una vez, antes de verificar si la condición es verdadera, luego repetirá el bucle mientras la condición sea verdadera.Sintaxis
do { // bloque de código a ejecutar } while (condición);El siguiente ejemplo utiliza un bucle
do/while. El bucle siempre se ejecutará al menos una vez, incluso si la condición es falsa, porque el bloque de código se ejecuta antes de que se pruebe la condición:Ejemplo
int i = 0;
do { MessageBox.Show(i); i++; } while (i < 5);ejercicio práctico.¡No olvides aumentar la variable utilizada en la condición, de lo contrario el ciclo nunca terminará!
En el Form1 agrega:
- Label:
"Ingrese un número:" - TextBox:
txtNumero - Button:
btnFor→ Texto:"Tabla de multiplicar (FOR)" - Button:
btnWhile→ Texto:"Conteo regresivo (WHILE)" - ListBox:
lstResultadospara mostrar resultados.
using System;
using System.Windows.Forms;
namespace EjerciciosCiclos {
public partial class Form1 :
Form {
public Form1() { InitializeComponent(); } // Ejercicio 1: Tablas de multiplicar con FOR
private void btnFor_Click(object sender, EventArgs e) {
lstResultados.Items.Clear(); // Validar entrada
if (!int.TryParse(txtNumero.Text, out int numero) || numero <= 0) {
MessageBox.Show("Ingrese un número entero positivo.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// Ciclo FOR para generar la tabla
for (int i = 1; i <= 10; i++) {
lstResultados.Items.Add($"{numero} x {i} = {numero * i}"); } } //
Ejercicio 2: Conteo regresivo con WHILE
private void btnWhile_Click(object sender, EventArgs e) {
lstResultados.Items.Clear(); // Validar entrada
if (!int.TryParse(txtNumero.Text, out int numero) || numero <= 0) {
MessageBox.Show("Ingrese un número entero positivo.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// Ciclo WHILE para conteo regresivo
while (numero >= 0) {
lstResultados.Items.Add($"Cuenta: {numero}"); numero--;
}
}
}
}
- Label:
- Semana No. 1 CORTE II
Semana No. 1 CORTE II
VECTORES Y MATRICES EN C#
¿Qué es un Vector?
Es una fila de casillas enumeradas. Cada casilla tiene una posición llamada índice, que siempre empieza en 0.
- Declaración: int[] miVector = new int[3]; (Crea un vector para guardar 3 números enteros).
- Estructura visual: [ Casilla 0 ] [ Casilla 1 ] [ Casilla 2 ]
¿Qué es una Matriz?
Es una cuadrícula con filas y columnas (como una hoja de Excel). Para acceder a un dato, necesitas indicar la fila y la columna.
- Declaración: int[,] miMatrix = new int[2, 3]; (Crea una matriz de 2 filas y 3 columnas).
- Estructura visual:
[Fila 0, Columna 0] [Fila 0, Columna 1] [Fila 0, Columna 2]
[Fila 1, Columna 0] [Fila 1, Columna 1] [Fila 1, Columna 2]
Diseño de la Interfaz- Form1 (Carga de Datos):
- 3
TextBoxllamados:txtNota1,txtNota2,txtNota3. - 1
Buttonllamado:btnCalcular.
- 3
- Form2 (Resultados):
- 1
ListBoxllamado:lstResultados.
- 1
formulario 2 En la barra de herramientas proyecto agrega un nuevo Windows aplicationprivate void btnCalcular_Click(object sender, EventArgs e) { // 1. Crear un VECTOR para almacenar las 3 notas ingresadas double[] notas = new double[3]; // Convertir el texto de los TextBox a números decimales notas[0] = Convert.ToDouble(txtNota1.Text); notas[1] = Convert.ToDouble(txtNota2.Text); notas[2] = Convert.ToDouble(txtNota3.Text); // 2. Calcular el promedio usando los datos del vector double suma = notas[0] + notas[1] + notas[2]; double promedio = suma / 3; // 3. Crear una MATRIZ para organizar los resultados (1 fila, 2 columnas) // Columna 0 = Suma total, Columna 1 = Promedio double[,] matrizResultados = new double[1, 2]; matrizResultados[0, 0] = suma; matrizResultados[0, 1] = promedio; // 4. Pasar la matriz al Form2 mediante su constructor Form2 formularioResultado = new Form2(matrizResultados); formularioResultado.Show(); this.Hide(); // Oculta el formulario actual }public partial class Form2 : Form { // Variable global en Form2 para almacenar la matriz recibida private double[,] datosRecibidos; // Modificamos el constructor para aceptar la matriz public Form2(double[,] matrizPasada) { InitializeComponent(); this.datosRecibidos = matrizPasada; } // Evento que se ejecuta al cargar el formulario private void Form2_Load(object sender, EventArgs e) { // Extraer los datos de la matriz usando sus posiciones (Fila, Columna) double totalSuma = datosRecibidos[0, 0]; double totalPromedio = datosRecibidos[0, 1]; // Mostrar los elementos formateados en el ListBox lstResultados.Items.Add("--- REPORTE DE NOTAS ---"); lstResultados.Items.Add("Suma Total: " + totalSuma); lstResultados.Items.Add("Promedio Final: " + totalPromedio.ToString("F2")); // F2 limita a 2 decimales } }Enviar este ejercicio Vía Whatsapp
- Semana No.2: Modulo II
Semana No.2: Modulo II
MenuStrip.
Este componente te permite organizar de forma jerárquica las opciones principales y desplegables de tu interfaz.
- Añade el MenuStrip: Ve al Cuadro de herramientas (Toolbox), busca la sección Menús y barras de herramientas y arrastra el control MenuStrip hacia tu formulario.
- Diseña el menú: Verás que aparece un cuadro en la parte superior de tu formulario que dice "Escriba aquí". Escribe el nombre de las opciones principales (por ejemplo, Archivo, Editar, Ayuda).
A pulsar un doble clic a cada recuadro podrás visualizar la ventana de codificar para darle una función a cada menú.
ejemplo:
Diseña un formulario con un menú que contenga "INICIO" dentro o debajo donde dice new en la imagen, cambia por password y en open salir. en la barra de herramientas de visual net dale clic a proyectos y agrega un nuevo Windows Aplicatión o formulario 2. regresas al form1.
Dale un doble clic a password y coloca el siguiente código:
form2 ventana = new form2(); // crea la instancia del segundo formulario
ventana. Show(); // muestra el segundo formulario
this.Hide(); // oculta el primer formulario
En el formulario 2 diseña el siguiente password:
2 label (Usuario, Contraseña)
2 textbox
tres button ( ingresar, salir, retornar)
Codigo Button Ingresar
if (textBox1.text =="Minerva" && textBox2.text=="134")
}
form3.show();
{
else
}
MessageBox.Show("contraseña incorrecta, intenta de nuevo");
textbox1.text.clear();
textbox2.clear();
textbox1.text.focus(); // limpia los campos y regresa el cursor al textbox1
Botón salir
Clear();
Botón retorno
form1.show();
this Hide();
ENVIA ESTE EJERCICIO VIA WHATSAPP
- Semana No. 3: DataGridView
Semana No. 3: DataGridView
CONTROL DATAGRIDVIEW:
Un
DataGridViewes un control visual de Windows Forms que sirve para mostrar, editar y organizar datos en forma de tabla (filas y columnas), de manera muy similar a una hoja de cálculo de Excel. Es la herramienta estándar en C# para manejar listas de objetos o bases de datos en la interfaz gráfica.1. Crear el Modelo de DatosAgrega una clase a tu proyecto llamadaProducto.cspara definir qué datos guardaremos:public class Producto { public int Id { get; set; } //GET Y SET public string Nombre { get; set; } public double Precio { get; set; } }get(Obtener): Se ejecuta cuando lees o pides el valor de la propiedad [1]. Equivalente a "dame el dato".set(Establecer): Se ejecuta cuando asignas o cambias el valor de la propiedad [1, 2]. Equivalente a "guarda este dato". Usualmente emplea la palabra clavevalue, que representa el nuevo valor que se quiere guardar [2].
2.Diseñar el Formulario (
Form1)Coloca los siguientes controles en tu ventana de diseño:3 TextBox:
txtId,txtNombre,txtPrecio.- 1 DataGridView:
dgvProductos. - 3 Botones:
btnAgregar,btnModificar,btnEliminar.
3. Código del Formulario (Form1.cs)Reemplaza el código de tu formulario por el siguiente. Este bloque incluye las operaciones del CRUD: Create (Agregar), Read (Leer/Mostrar), Update (Modificar) y Delete (Eliminar).REALIZA ESTE EJERCICIO Y ENVIA POR WHATSAPPusing System; using System.ComponentModel; using System.Windows.Forms; namespace CrudDataGrid { public partial class Form1 : Form { // Colección especial que actualiza el DataGridView automáticamente al cambiar private BindingList<Producto> listaProductos = new BindingList<Producto>(); // Variable para rastrear qué fila está seleccionada para editar private int filaSeleccionada = -1; public Form1() { InitializeComponent(); // Vincular la lista directamente al DataGridView (READ implícito) dgvProductos.DataSource = listaProductos; } // --- C: CREATE (Agregar) --- private void btnAgregar_Click(object sender, EventArgs e) { Producto nuevo = new Producto { Id = Convert.ToInt32(txtId.Text), Nombre = txtNombre.Text, Precio = Convert.ToDouble(txtPrecio.Text) }; listaProductos.Add(nuevo); LimpiarCampos(); } // --- Evento al hacer clic en una fila de la tabla --- private void dgvProductos_CellClick(object sender, DataGridViewCellEventArgs e) { filaSeleccionada = e.RowIndex; // Validar que se haya hecho clic en una fila válida y no en el encabezado if (filaSeleccionada >= 0) { // Pasar los datos de la fila seleccionada de vuelta a los TextBox txtId.Text = dgvProductos.Rows[filaSeleccionada].Cells[0].Value.ToString(); txtNombre.Text = dgvProductos.Rows[filaSeleccionada].Cells[1].Value.ToString(); txtPrecio.Text = dgvProductos.Rows[filaSeleccionada].Cells[2].Value.ToString(); // Bloquear el ID para evitar inconsistencias al modificar txtId.Enabled = false; } } // --- U: UPDATE (Modificar) --- private void btnModificar_Click(object sender, EventArgs e) { if (filaSeleccionada >= 0) { // Modificar el objeto directamente en la lista indexada listaProductos[filaSeleccionada].Nombre = txtNombre.Text; listaProductos[filaSeleccionada].Precio = Convert.ToDouble(txtPrecio.Text); // Forzar al DataGridView a refrescar los valores visuales listaProductos.ResetItem(filaSeleccionada); LimpiarCampos(); } else { MessageBox.Show("Seleccione un producto de la tabla primero."); } } // --- D: DELETE (Eliminar) --- private void btnEliminar_Click(object sender, EventArgs e) { if (filaSeleccionada >= 0) { // Eliminar el elemento de la lista por su posición listaProductos.RemoveAt(filaSeleccionada); LimpiarCampos(); } else { MessageBox.Show("Seleccione el producto que desea eliminar."); } } // Método auxiliar para limpiar la interfaz private void LimpiarCampos() { txtId.Clear(); txtNombre.Clear(); txtPrecio.Clear(); txtId.Enabled = true; filaSeleccionada = -1; } } } - Semana No. 8: Base de Datos y C#
Semana No. 8: Base de Datos y C#
Para crear y gestionar una base de datos local en XAMPP y conectarla a una aplicación de escritorio o web en C#, utilizando el paquete MySql.Data para establecer la comunicación y realizar consultas.
En este link podras seguir unos simples pasos para instalar el Xampp:
https://www.ionos.com/es-us/digitalguide/servidores/herramientas/instala-tu-servidor-local-xampp-en-unos-pocos-pasos/
Paso 1: Configurar la Base de Datos en XAMPP- Inicia los servicios: Abre el Panel de Control de XAMPP(https://www.apachefriends.org/es/index.html), ubica el módulo MySQL (o MariaDB) y haz clic en Start.
- Accede a phpMyAdmin: Abre tu navegador web e ingresa a http://localhost/phpmyadmin/.
- Crea tu base de datos: En el menú lateral, haz clic en Nueva. Escribe un nombre para tu base de datos (por ejemplo,
tienda_db) y selecciona el cotejamientoutf8_general_ci. Haz clic en Crear.
Paso 2: Conectar C# con MySQL (XAMPP) [1]Para que tu proyecto de C# reconozca el motor de base de datos de XAMPP, necesitas descargar el controlador oficial llamado MySql.Data.2.1 Instalar la librería (NuGet)2.2 Código de Conexión en C#Aquí tienes el código necesario para establecer, abrir y cerrar la conexión con XAMPP.csharpusing System; using MySql.Data.MySqlClient; // Requiere instalar MySql.Data namespace ConectarXAMPP { class Program { static void Main(string[] args) { // Cadena de conexión estándar para XAMPP // Servidor: localhost | Base de datos: tu_base_de_datos | Usuario: root | Contraseña: (vacía por defecto) string cadenaConexion = "Server=localhost;Database=tienda_db;Uid=root;Pwd=;"; using (MySqlConnection conexion = new MySqlConnection(cadenaConexion)) { try { conexion.Open(); Console.WriteLine("¡Conexión exitosa a la base de datos de XAMPP!"); } catch (Exception ex) { Console.WriteLine("Error al conectar: " + ex.Message); } } } } }Paso 3: Operaciones CRUD básicas (Consultar e Insertar)Una vez abierta la conexión (conexion.Open()), puedes ejecutar comandos SQL directamente desde C#.Consultar Datos (SELECT)csharpstring query = "SELECT id, nombre, precio FROM productos"; MySqlCommand comando = new MySqlCommand(query, conexion); MySqlDataReader lector = comando.ExecuteReader(); while (lector.Read()) { Console.WriteLine($"ID: {lector["id"]} | Producto: {lector["nombre"]} | Precio: {lector["precio"]}"); } lector.Close();Insertar Datos (INSERT)(Es muy importante usar parámetros@parametropara evitar ataques de inyección SQL).csharpstring query = "INSERT INTO productos (nombre, precio) VALUES (@nombre, @precio)"; MySqlCommand comando = new MySqlCommand(query, conexion); // Asignar valores a los parámetros comando.Parameters.AddWithValue("@nombre", "Laptop Gamer"); comando.Parameters.AddWithValue("@precio", 1200.50); int filasAfectadas = comando.ExecuteNonQuery(); if (filasAfectadas > 0) { Console.WriteLine("Registro insertado correctamente."); } - Semana No. 9: Desde DD/MM/AA Hasta DD/MM/AA
- Semana No. 10: Desde DD/MM/AA Hasta DD/MM/AA
- MATERIAL DE APOYO
MATERIAL DE APOYO

* Evaluaciones * Cuentos
* Material multimedia * Libros
* Videos * Revistas
* Link educativos * Otros
* Foros
- TIPOS DE ESTRATEGIAS DE ENSEÑANZAS Y APRENDIZAJES
TIPOS DE ESTRATEGIAS DE ENSEÑANZAS Y APRENDIZAJES
1.- EXÁMEN ESCRITO
2.- EXPOSICIÓN
3.- FORO, CONVERSATORIOS Y DEBATES
4.- TALLER
5.- MAPA MENTAL Y CONCEPTUAL
6.- INFOGRAFÍAS
7.- SIMPOSIO
8.- CUESTIONARIOS
9.- PARTICIPACIÓN EN CLASE
10.- ACTIVIDADES ASIGNADAS
11.- ENTRE OTROS....


