Que nadie se lo tome a mal! Pero después de reírnos un rato, nos encontramos a menudo perdiendo la tarde en búsqueda de cómo realizar las cosas más sencillas. Intentando dar respuesta a la repetida pregunta de cómo posicionarnos dentro de nuestro DataGridView… Ahí va la respuesta:
Dim Columna As Integer = 0, Fila As Integer = 0
Me.DataGridView1.CurrentCell = _
Me.DataGridView1(Columna, Fila)
La de tumbos que a veces damos, porque creo que difícil no es! J
Saludos,
Pep Lluis,
Gracias capo!! me recontrasirvió!!
Increible!!
Ni el MSDN Lo explica tan sencillo como aca.
Me sirvio mil.
oye buen blogs man, oye una pregunta estyo haciendo un programa de facturacion agrege un datagridview enlazada a mi base de datos, quiero poner un campo de busqueda como puedo programarlo para cuando le de un numero de factura a mi textbox1.text me posecione en el registro indicado, ayudame por favor
Hola man,
Precisamente aqui tienes un ejemplo :
http://msmvps.com/blogs/peplluis/archive/2009/04/24/buscar-un-texto-en-una-columna-y-seleccionar-los-coincidentes-en-un-dgv.aspx
Espero te sea util.
Pep Lluis,
GRANDEEEEEEEEE PEPE….
Estuve como ustedes 3 horas pegado para hacer algo parecido….
Que tal pepLuis he estado chekando tu blog y me ha parecido de gran ayuda , quisiera consultarte sobre como puedo tomar el valor de la celda actual en donde estoy posicionado aplicando al codigo que describes, asi como si se puede de otra manera de como obtener el ultimo valor de un registro de una tabla.
Gracias saludos.
‘ _|/_
‘ (o o)
‘+—-oOO-{_}-OOo——kino619—+
Oye peplluis jamas imagine que con 2 lineas de codigo pudieras hacer algo que muchos han intentado hacer (incluso yo), por que en otros foros he encontrado codigos enormes para lograr hacer esto y al final de cuentas nunca me sirvieron
Bien por ti…
muchas gracias. pase horas buscando hasta encontrar esta maravilla
Pep. no me figura la propeidad CurrentCell
Solo me figura: CurrentCellModified y CurrentcellVisible.
Este es mi codigo:
Private Sub PosicionarDataGrid_EnCelda(DG As
DataGrid, Fila As Integer, Columna As Integer)
‘Los valores que traen Fila y Columna son 1 y 3 respectivamente
Fila = 1
Columna = 3
DG.currentcell = DG(Columna, Fila)
‘Aquí debiera posicionarse,
‘pero no me aparece la Propiedad currentcell
End Sub
Private Sub PosicionarDataGrid_EnCelda(DG As DataGrid, Fila As Integer, Columna As Integer)
‘Los valores que traen Fila y Columna son 1 y 3 respectivamente
Fila = 1
Columna = 3
DG.currentcell = DG(Columna, Fila)
‘Aquí debiera posicionarse,
‘pero no me aparece la Propiedad currentcell
End Sub
Private Sub PosicionarDataGrid_EnCelda(DG As DataGrid, Fila As Integer, Columna As Integer)
‘Los valores que traen Fila y Columna son 1 y 3 respectivamente
Fila = 1
Columna = 3
DG.currentcell = DG(Columna, Fila)
‘Aquí debiera posicionarse,
‘pero no me aparece la Propiedad currentcell
End Sub
muchas gracias, ya me estaba dando dolor de cabeza hasta con la enmarañada ayuda de microsoft. en C# sería:
Int16 xCelda = 0; // columna celda datagridview1
Int16 yCelda = 0; // fila celda datagridview1
…
xCelda = Convert.ToInt16(dataGridView1.CurrentCell.ColumnIndex.ToString());
yCelda = Convert.ToInt16(dataGridView1.CurrentCell.RowIndex.ToString());
…
this.dataGridView1.CurrentCell = this.dataGridView1[xCelda, yCelda];
Yo si que di tumbos buscando como hacer esto, hasta tuve que recurrir al SendKeys.Send(» {TAB}{TAB}{TAB} …..n») hasta posicionar el foco en la celda. Gracias!!!!
Querido PepLluis, gracias por tu aporte, mejor que el MSDN, que esta lleno de formalismos.
Pep, cuando presiono [Enter] en un DataGridView, el foco se poseciona en la celda inmediata de abajo (Fila siguiente), cuando lo que quiero es que avance a la celda izquierda , y cunado llegue al final de la fila baje a la siguiente fila, espero ser lo más explicito posible.
Gracias, por tu respuesta.
ya encontre la solución con el evento CellEndEdit en Visual Studio
SendKeys.Send(«{UP}»);
Ahora ya puedo hacer subir el FOCO cuando Presiono [Enter]
aquí pongo un pedazo del código para hacerme entender
private void objDataGridView_elementos_documento_factura_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 4)
{
//procesar.FilaActual = objDataGridView_elementos_documento_factura.CurrentRow.Index;
/****************************************************
*
* SUBTOTAL
*
* Calcula en Subtotal en DataGridVIew,
* usando el Evento CellEndEdit = Fin de Editar la Celda
*
****************************************************/
procesar.SubTotal(this);
objDataGridView_elementos_documento_factura.CurrentCell = objDataGridView_elementos_documento_factura.CurrentRow.Cells[1];
}
else
{
if (
objDataGridView_elementos_documento_factura.CurrentRow.Cells[1].Value != null
&&
objDataGridView_elementos_documento_factura.CurrentRow.Cells[4].Value == null
)
{
string codigo = Convert.ToString(
objDataGridView_elementos_documento_factura.CurrentRow.Cells[1].Value);
procesar.pasar += new Procesos_Facturacion.delegado(pasar_datos);
procesar.BuscarCodigo(codigo);
/****************************************************
*
* Mueve el Foco del DaGridView ((Hacia Arriba)),
* despues de presentar la información de la celda
*
* (( SendKeys.Send(«{UP}»); ))
*
****************************************************/
SendKeys.Send(«{UP}»);
}
if (objDataGridView_elementos_documento_factura.CurrentRow.Cells[3].Value != null
&&
objDataGridView_elementos_documento_factura.CurrentRow.Cells[4].Value != null)
{
SendKeys.Send(«{RIGHT}»);
SendKeys.Send(«{UP}»);
}
}
Le doy gracias a Dios, porque ya estaba por abandonar el proyecto…en C# con WindowsForm
Muchas gracias, después de buscar por varios días, como hacer esto lo encontré en tu pagina, nuevamente muchas gracias.
Dim Columna As Integer = 3, Fila As Integer = 0
Me.DataGridView1.CurrentCell = _
Me.DataGridView1(Columna, Fila)
Me.DataGridView1.BeginEdit(True)
de esta forma cae el foco en esta fila y columna y se queda editada y lista para escribir.
La solución con el sendkeys, me salvo la vida, muchas gracias
Muy bueno tenia toda la mañana buscando esto, gracias
Pp Luis gracias por el aporte, pero esas dos lineas de código no es suficiente, lo que hace es posicionarse en la celda indicada mas no pone el cursor en la celda. Como se podría hacer?