none
Leer los datos recién tecleados de un DataGridView RRS feed

  • Pregunta

  • Hola, lo que quiero es cachar lo que escribo para realizar algunas comparaciones...

    string cadena = DGVCUENTA.Rows[index].Cells["CANTIDAD"].Value.ToString();

    Estoy usando esta linea pero esto me arroja únicamente lo que ya esta escrito de por sí, ósea si tengo un 1 y comienzo a escribir de nuevo me sigue arrojando ese "1"... 

    martes, 26 de enero de 2021 22:35

Respuestas

  • Hola TORO

    Para obtener el contenido de lo que estás escribiendo en tiempo real, te hice un pequeño programa de ejemplo, que va colocando en un TextBox el string que vas escribiendo en la celda de índice 1. 

    Tuve que googlear y la idea la robé de aquí: https://stackoverflow.com/questions/3820672/cell-value-changing-event-c

    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    namespace WinFormsAppDGVCellValueChanged
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dataGridView1.CurrentCell.ColumnIndex == 1)
                {
                    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }
    
            private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 1 && dataGridView1.Rows.Count > 0 && e.RowIndex >= 0) 
                {
                    textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                }
            }
        }
    }
    

    Saludos

    Pablo

    • Marcado como respuesta TORO BLANCO miércoles, 27 de enero de 2021 21:42
    miércoles, 27 de enero de 2021 13:11

Todas las respuestas

  • Debes hacerlo dentro de algún evento apropiado del Datagridview, por ejemplo CellEndEdit. Te debería quedar algo así:

    private void DGVCUENTA_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
          String cadena = DGVCUENTA[e.ColumnIndex, e.RowIndex].Value.ToString();
    }

    miércoles, 27 de enero de 2021 13:05
  • Hola TORO

    Para obtener el contenido de lo que estás escribiendo en tiempo real, te hice un pequeño programa de ejemplo, que va colocando en un TextBox el string que vas escribiendo en la celda de índice 1. 

    Tuve que googlear y la idea la robé de aquí: https://stackoverflow.com/questions/3820672/cell-value-changing-event-c

    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    namespace WinFormsAppDGVCellValueChanged
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dataGridView1.CurrentCell.ColumnIndex == 1)
                {
                    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }
    
            private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 1 && dataGridView1.Rows.Count > 0 && e.RowIndex >= 0) 
                {
                    textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                }
            }
        }
    }
    

    Saludos

    Pablo

    • Marcado como respuesta TORO BLANCO miércoles, 27 de enero de 2021 21:42
    miércoles, 27 de enero de 2021 13:11
  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    miércoles, 27 de enero de 2021 14:03
    Moderador
  • Hola TORO

    Para obtener el contenido de lo que estás escribiendo en tiempo real, te hice un pequeño programa de ejemplo, que va colocando en un TextBox el string que vas escribiendo en la celda de índice 1. 

    Tuve que googlear y la idea la robé de aquí: https://stackoverflow.com/questions/3820672/cell-value-changing-event-c

    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    namespace WinFormsAppDGVCellValueChanged
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dataGridView1.CurrentCell.ColumnIndex == 1)
                {
                    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }
    
            private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 1 && dataGridView1.Rows.Count > 0 && e.RowIndex >= 0) 
                {
                    textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                }
            }
        }
    }
    

    Saludos

    Pablo

    Muchas gracias, es lo que buscaba de cierta forma aunque el hecho de usar un txbx como conector es lo que quisiera mejorar a futuro.
    miércoles, 27 de enero de 2021 21:43