Click derecho y menú contextual DataGridView C# [08]

Click derecho y menú contextual DataGridView C# [08]

En este tutorial vamos validar cuando se hace click derecho y menú contextual DataGridView C# aparesca un menu contextual para poder borrar o mostrara todos los datos.

  • En el evento MouseClick de nuestro dataGridView vamos a validar cuando sea click derecho y si es asi:
    • Validamos que se haya dado click derecho en un registro
    • Creamos un ContextMenuStrip y le agregamos los menus Borrar y Mostrar y lo mostramos en la posición del registro.
  • Si se dio click en borrar borramos el registro y se dio Mostrar mostramos el registro en un MessageBox.
Click derecho y menú contextual DataGridView C#

Codigo: https://github.com/programadornovato/MySQL-CSharp/commit/48bb2af9ec292390a12c5a72a61241ff984bf8f9

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 MySql.Data.MySqlClient;
namespace MySQL_CSharp
{
    public partial class Form1 : Form
    {
        MySqlConnection myCon;
        string idSel = "";
        int sel;
        public Form1()
        {
            InitializeComponent();
            conectar();
            llenarTabla();
        }
        private void conectar() {
            try
            {
                string server = "localhost";
                string database = "empleados";
                string user = "root";
                string pwd = "123456";
                string cadenaConexion = "server=" + server + ";database=" + database + ";" + "Uid=" + user + ";pwd=" + pwd + ";";
                myCon = new MySqlConnection(cadenaConexion);
                myCon.Open();
                lblResultado.Text = "Conexion exitosa";
            }
            catch (Exception error)
            {
                lblResultado.Text = "Error de conexion " + error;
            }
        }
        private void llenarTabla() {
            string query = "select id,nombre,puesto,edad from trabajadores;";
            MySqlCommand comandoDB = new MySqlCommand(query, myCon);
            comandoDB.CommandTimeout = 60;
            MySqlDataReader reader;
            try
            {
                reader = comandoDB.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int n = dgTrabajadores.Rows.Add();
                        dgTrabajadores.Rows[n].Cells[0].Value = reader.GetString(0);
                        dgTrabajadores.Rows[n].Cells[1].Value = reader.GetString(1);
                        dgTrabajadores.Rows[n].Cells[2].Value = reader.GetString(2);
                        dgTrabajadores.Rows[n].Cells[3].Value = reader.GetString(3);
                        //MessageBox.Show(reader.GetString(0));
                    }
                }
                else
                {
                    Console.WriteLine("No hay trabajadores");
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            string where = " where 1=1 ";
            //Si el nombre no esta vacio
            if (txtBusNombre.Text != "")
            {
                where = where + " and nombre like'%" + txtBusNombre.Text + "%' ";
            }
            //Si el puesto no esta vacio
            if (txtBusPuesto.Text != "")
            {
                where = where + " and puesto like'%" + txtBusPuesto.Text + "%' ";
            }
            //Si la edad no esta vacio
            if (txtBusEdad.Text != "")
            {
                where = where + " and edad like'%" + txtBusEdad.Text + "%' ";
            }
            string query = "select id,nombre,puesto,edad from trabajadores " + where + " ;";
            MySqlCommand comandoDB = new MySqlCommand(query, myCon);
            comandoDB.CommandTimeout = 60;
            MySqlDataReader reader;
            dgTrabajadores.Rows.Clear();
            dgTrabajadores.Refresh();
            try
            {
                reader = comandoDB.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int n = dgTrabajadores.Rows.Add();
                        dgTrabajadores.Rows[n].Cells[0].Value = reader.GetString(0);
                        dgTrabajadores.Rows[n].Cells[1].Value = reader.GetString(1);
                        dgTrabajadores.Rows[n].Cells[2].Value = reader.GetString(2);
                        dgTrabajadores.Rows[n].Cells[3].Value = reader.GetString(3);
                        //MessageBox.Show(reader.GetString(0));
                    }
                }
                else
                {
                    Console.WriteLine("No hay trabajadores");
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }

        private void btnInsertar_Click(object sender, EventArgs e)
        {
            string query = "";
            string mensajeError = "";
            if (txtInNombre.Text == "") {
                mensajeError = mensajeError + "El nombre no puede estar vacio";
            }
            if (txtInPuesto.Text == "") {
                mensajeError = mensajeError + "El puesto no puede estar vacio";
            }
            if (txtInEdad.Text == "") {
                mensajeError = mensajeError + "La edad no puede estar vacio";
            }
            if (mensajeError == "")
            {
                query = "insert into trabajadores " +
                    "(nombre                ,puesto                ,edad) values " +
                    "('" + txtInNombre.Text + "','" + txtInPuesto.Text + "','" + txtInEdad.Text + "')";
                MySqlCommand comando = new MySqlCommand(query, myCon);
                comando.CommandTimeout = 60;
                MySqlDataReader reader;
                try
                {
                    reader = comando.ExecuteReader();
                    reader.Close();
                    dgTrabajadores.Rows.Clear();
                    dgTrabajadores.Refresh();
                    llenarTabla();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            else {
                MessageBox.Show(mensajeError);
            }

        }

        private void dgTrabajadores_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            sel = e.RowIndex;
            txtInNombre.Text = dgTrabajadores.Rows[sel].Cells[1].Value.ToString();
            txtInPuesto.Text = dgTrabajadores.Rows[sel].Cells[2].Value.ToString();
            txtInEdad.Text = dgTrabajadores.Rows[sel].Cells[3].Value.ToString();
            idSel = dgTrabajadores.Rows[sel].Cells[0].Value.ToString();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            string query = "";
            string mensajeError = "";
            if (txtInNombre.Text == "")
            {
                mensajeError = mensajeError + "El nombre no puede estar vacio";
            }
            if (txtInPuesto.Text == "")
            {
                mensajeError = mensajeError + "El puesto no puede estar vacio";
            }
            if (txtInEdad.Text == "")
            {
                mensajeError = mensajeError + "La edad no puede estar vacio";
            }
            if (mensajeError == "")
            {
                query = "update trabajadores set " +
                    "nombre='"+txtInNombre.Text+"'," +
                    "puesto='"+txtInPuesto.Text + "',"+
                    "edad='"+txtInEdad.Text + "' " +
                    "where id='"+idSel+"'; ";
                MySqlCommand comando = new MySqlCommand(query, myCon);
                comando.CommandTimeout = 60;
                MySqlDataReader reader;
                try
                {
                    reader = comando.ExecuteReader();
                    reader.Close();
                    dgTrabajadores.Rows.Clear();
                    dgTrabajadores.Refresh();
                    llenarTabla();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            else
            {
                MessageBox.Show(mensajeError);
            }

        }

        private void btnBorrar_Click(object sender, EventArgs e)
        {
            borrar(sel);
        }
        private void borrar(int selBorrar) {
            //sel
            idSel = dgTrabajadores.Rows[selBorrar].Cells[0].Value.ToString();
            string query = "delete from trabajadores where id='" + idSel + "';";
            MySqlCommand comando = new MySqlCommand(query, myCon);
            comando.CommandTimeout = 60;
            MySqlDataReader reader;
            try
            {
                reader = comando.ExecuteReader();
                reader.Close();
                dgTrabajadores.Rows.Clear();
                dgTrabajadores.Refresh();
                llenarTabla();
                txtInNombre.Text = "";
                txtInPuesto.Text = "";
                txtInEdad.Text = "";
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        private void dgTrabajadores_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right) {
                ContextMenuStrip menu =new System.Windows.Forms.ContextMenuStrip();
                int posicion = dgTrabajadores.HitTest(e.X, e.Y).RowIndex;
                if (posicion > -1) {
                    menu.Items.Add("Borrar").Name = "Borrar" + posicion;
                    menu.Items.Add("Mostrar").Name = "Mostrar" + posicion;
                }
                menu.Show(dgTrabajadores, e.X, e.Y);
                menu.ItemClicked += new ToolStripItemClickedEventHandler(munuClick);
            }
        }
        private void munuClick(object sender, ToolStripItemClickedEventArgs e) {
            string id = e.ClickedItem.Name.ToString();
            if (id.Contains("Borrar")) {
                id = id.Replace("Borrar", "");
                borrar(int.Parse(id));
            }
            if (id.Contains("Mostrar")) {
                id = id.Replace("Mostrar", "");
                mostrar(int.Parse(id));
            }
        }
        private void mostrar(int idMostrar) {
            string res = "ID="+dgTrabajadores.Rows[idMostrar].Cells[0].Value.ToString()+"\n";
            res = res + "NOMBRE=" + dgTrabajadores.Rows[idMostrar].Cells[1].Value.ToString() + "\n";
            res = res + "PUESTO=" + dgTrabajadores.Rows[idMostrar].Cells[2].Value.ToString() + "\n";
            res = res + "EDAD=" + dgTrabajadores.Rows[idMostrar].Cells[3].Value.ToString() + "\n";
            MessageBox.Show(res);
        }
    }
}

🎦 [CURSO] C##️⃣: https://www.youtube.com/watch?v=NKPMGY6NCko&list=PLCTD_CpMeEKQSOU8Vf9VHXrZa2rc8X0X5&index=1&t=3s&ab_channel=programadornovatoprogramadornovato
🎦 [CURSO] C CON FORMULARIOS##️⃣: https://www.youtube.com/watch?v=l0_U4oyOuns&list=PLCTD_CpMeEKTBih1VgeunCjc83ZQ6UBMI&index=1&ab_channel=programadornovatoprogramadornovato
🎦 [CURSO] C++ DE 0 A HEROE 🦸: https://www.youtube.com/watch?v=APN8aCyPvww&list=PLCTD_CpMeEKTofxs7iottRxJ5YPM7BOcc&ab_channel=programadornovato
🎦 [Curso] Java Netbeans GUI Completo☕: https://www.youtube.com/watch?v=18UA7X2ss8g&list=PLCTD_CpMeEKThfXo8D-RXOGu5FarO7_qv&ab_channel=programadornovato

Anterior tutorial Siguiente tutorial

Salir de la versión móvil

Ads Blocker Detected!!!

En Programador Novato vivimos de los anuncios, hemos detectado que está utilizando extensiones para bloquear anuncios. Ayudanos deshabilitando tu bloqueador de anuncios. :)