Recorrer celdas con teclado

Hola espero puedan ayudarme, tengo un Listbox con sus respectivas columnas y filas, necesito moverme entre celdas con el teclado con flechas hacia abajo, arriba, derecha e izquierda tal cual como lo hace EXCEL, alguien sabe como puedo hacerlo?

Hola Karem,

En el evento CellKeyDown tienes que ver si la tecla pulsada es una de las flechas (o Enter o TAB, por ejemplo) y luego utiliza el mtodo listbox.EditCell para llevar el cursor a la celda que sea adecuada.

Si tienes dudas no dudes en preguntar.

Julen

la propiedad “selection type” solo tiene dos modos: single y multiple. habria que buscar alguna forma de que la seleccion sea por celda

Hola Julen, gracias por tu respuesta, lo que deseo saber es que voy a colocar en el mtodo?

quizas este link ayude?

Hola Karem Andrea
Puedes revisar la aplicacion que viene con xojo ListBoxGridExample

Supongo que ya tienes agregados las filas y las columnas en tu lisbox

En el evento Cellaction escribes el siguientes codigo

Me.CellType(row, column) = ListBox.TypeNormal
Me.SetFocus

En el evento Cellclick

Me.fila=row Me.Columna=column Me.Celltype(row, column) = Me.TypeEditableTextField Me.EditCell(row,column)

En el evento CellKeyDown

  Dim n as Integer
  
  n=key.Asc
  Select case n
    
  Case 1,4,8,9,13,127,45,46,48 to 57
    return false
  Case 28,29,30,31
    
  Case else
    return true
  End Select
  
  Dim newFila As Integer = Me.fila
  Dim newColumna As Integer = Me.columna
  
  SELECT Case Key
    
  Case Encodings.ASCII.Chr(30) // Up arrow
    newFila = Me.Fila-1
    If newFila < 0 Then newFila = 0
    Me.Fila = newFila
    Me.CellType(newFila,newColumna) = Listbox.TypeEditableTextField
    Me.EditCell(newFila,newColumna)
    
  Case Encodings.ASCII.Chr(31) // Down arrow
    newFila = Me.Fila+1
    If newFila > Me.ListCount-1 Then
      newFila=Me.ListCount-1
    End If
    Me.Fila = newFila
    Me.CellType(newFila,newColumna) = Listbox.TypeEditableTextField
    Me.EditCell(newFila,newColumna)
    
  Case Encodings.ASCII.Chr(28) // Left arrow
    newColumna = newColumna-1
    If newColumna < 0 Then
      newColumna = 0
    End If
    Me.Fila = row
    Me.Columna = newColumna
    Me.CellType(newFila,newColumna) = Listbox.TypeEditableTextField
    Me.EditCell(newFila,newColumna)
    
    
  Case Encodings.ASCII.Chr(29) // Right arrow
    
    newColumna = newColumna+1
    If newColumna > Me.ColumnCount-1 Then
      newColumna = Me.ColumnCount-1
    End If
    Me.Fila = row
    Me.columna = newColumna
    Me.CellType(newFila,newColumna) = Listbox.TypeEditableTextField
    Me.EditCell(newFila,newColumna)
    
  End Select

En el evento KeyUp

  Dim newFila As Integer = Me.fila
  Dim newColumna As Integer = Me.columna
  
  If Asc(Key)=13 Then
    newColumna = newColumna+1
    If newColumna > Me.ColumnCount-1 Then
      newColumna = Me.ColumnCount-1
    End If
    Me.columna = newColumna
    Me.CellType(newFila,newColumna) = Listbox.TypeEditableTextField
    Me.EditCell(newFila,newColumna)
  End If

En el evento open

  Me.ColumnType(0)=Listbox.TypeEditable
  Me.ColumnType(1)=Listbox.TypeEditable
  Me.ColumnType(2)=Listbox.TypeEditable

Para el ejemplo es un listbox de 3 filas y 3 columnas
Espero que le ayude

Cordialmente,

Raul

Hola Raul muchsimas gracias por tu respuesta, si me ayudo.