ENTER COMO TAB NO DATAGRIDVIEW

FELIPEDRONI 09/03/2012 11:05:38
#396786
Ola pessoal , olha eu aqui de novo querendo a ajuda de vcs...
O problema é o seguinte, quando estou navegando no dgv quero
que quando apertar enter ele trocar de coluna, já procurei na net mas
os exemplos que eu encontrei não funcionaram, se vcs poderem me ajudar
desde já agradeço.
JABA 10/03/2012 16:35:03
#396867
Resposta escolhida

Public Class frmPrincipal

Dim contador As Integer = -1

Private Sub grid1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles grid1.KeyDown
If e.KeyCode = Keys.Enter Then
passarCelula(contador, grid1)
contador = contador + 1
If contador >= grid1.Columns.Count - 1 Then contador = -1
e.Handled = True
End If
End Sub

Private Sub passarCelula(indiceAtual As Integer, grid As DataGridView)
If indiceAtual = -1 Then
grid1.Rows(grid.CurrentRow.Index).Cells(0).Selected = True
grid1.Rows(grid.CurrentRow.Index).Cells(grid1.Columns.Count - 1).Selected = False
ElseIf indiceAtual < grid.Columns.Count - 1 Then
grid1.Rows(grid.CurrentRow.Index).Cells(indiceAtual).Selected = False
grid1.Rows(grid.CurrentRow.Index).Cells(indiceAtual + 1).Selected = True
Else
grid1.Rows(grid.CurrentRow.Index).Cells(0).Selected = True
grid1.Rows(grid.CurrentRow.Index).Cells(grid.Columns.Count - 1).Selected = False
End If
End Sub

End Class
FELIPEDRONI 12/03/2012 15:03:17
#396987
hey JABA, então cara estou querendo algo mais simples, fiz deste jeito

Private Sub dgv1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv1.KeyDown
If e.KeyCode = Keys.Enter Then
SendKeys.Send([Ô]{TAB}[Ô])
End If
End Sub

mas quando eu aperto enter ele passa para linha de baixo e não para coluna ao lado.
Cara se vc poder explicar seu código eu agradeço muito, ele funciono mas não do jeito que estou tentando...

LUCASVAZ 12/03/2012 15:41:41
#396988
Felipe, seu código está certinho, igual ao meu que postei há alguns dias aqui no forum mesmo mas um exemplo com [Ô]textbox[Ô], acho que você não deve ter habilitado o keyPreview. Clique no seu form, e na janela [Ô]properties[Ô], procure o KeyPreview (e.Handled ) e altere para True e teste novamente.

Att,

Lucas
JABA 12/03/2012 16:05:08
#396991
Faça assim:

Private Sub grid1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles grid1.KeyDown
If e.KeyCode = Keys.Enter Then
SendKeys.Send([Ô]{TAB}[Ô])
e.Handled = True
End If
End Sub

me pontue se te ajudei.
vlw
FELIPEDRONI 12/03/2012 16:12:24
#396994
Então galera ele Continua passando para a linha de baixo, eu quero que ele passe para coluna do lado...
LUCASVAZ 12/03/2012 16:13:34
#396995
Poste, se possivel, seu código como anexo para analisarmos por favor.

Att,

lucas
FELIPEDRONI 12/03/2012 16:22:34
#396997
Form1, contem um datagridview, um botão e um textbox

Imports System.Data.SqlClient
Imports System.Windows.Forms.DataGridView

Public Class Form1
Dim contador As Integer = -1
Dim isNovo As Boolean = False
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
carrega_grid()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dgv1.Columns(0).ReadOnly = False

End Sub

Public Sub adicionar()
Try


cnn.Open()
cmd = New SqlCommand([Ô]sp_i_insert_grade[Ô], cnn)
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.Parameters.Add([Ô]@codpro_grade[Ô], SqlDbType.Int).Value = Me.txt1.Text
cmd.Parameters.AddWithValue([Ô]@codigo[Ô], dgv1.CurrentRow.Cells([Ô]Código[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@desc1[Ô], Me.dgv1.CurrentRow.Cells([Ô]Coluna 1[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@desc2[Ô], Me.dgv1.CurrentRow.Cells([Ô]Coluna 2[Ô]).Value)
[ô]cmd.Parameters.AddWithValue([Ô]@qtd[Ô], dgv1.CurrentRow.Cells([Ô]Qtde[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@cod_forn_grade[Ô], Me.dgv1.CurrentRow.Cells([Ô]Código Fornecedor[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@cod_bar[Ô], Me.dgv1.CurrentRow.Cells([Ô]código de Barras[Ô]).Value)

If cmd.ExecuteNonQuery <> 0 Then
MsgBox([Ô]Cadastrado com sucesso![Ô], MsgBoxStyle.Information)
Else
MsgBox([Ô]O cadastro não concluido[Ô], MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
MsgBox([Ô]Erro: [Ô] & Err.Description, MsgBoxStyle.Exclamation)
Finally
cnn.Close()
cmd = Nothing

End Try
End Sub

Public Sub atualiza()
Try
cnn.Open()

cmd = New SqlCommand([Ô]sp_U_altera_grade[Ô], cnn)
cmd.CommandType = Data.CommandType.StoredProcedure
[ô]cmd.Parameters.Add([Ô]@codpro_grade[Ô], SqlDbType.Int).Value = Me.txt1.Text
cmd.Parameters.Add([Ô]@codigo[Ô], SqlDbType.Int).Value = Me.dgv1.CurrentRow.Cells([Ô]Código[Ô]).Value
cmd.Parameters.AddWithValue([Ô]@desc1[Ô], Me.dgv1.CurrentRow.Cells([Ô]Coluna 1[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@desc2[Ô], Me.dgv1.CurrentRow.Cells([Ô]Coluna 2[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@qtd[Ô], dgv1.CurrentRow.Cells([Ô]Qtde[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@cod_forn_grade[Ô], Me.dgv1.CurrentRow.Cells([Ô]Código Fornecedor[Ô]).Value)
cmd.Parameters.AddWithValue([Ô]@cod_bar[Ô], Me.dgv1.CurrentRow.Cells([Ô]código de Barras[Ô]).Value)

If cmd.ExecuteNonQuery Then
MsgBox([Ô]Alterado com sucesso![Ô], MsgBoxStyle.Information)
Else
MsgBox([Ô]A grade não foi alterada[Ô], MsgBoxStyle.Information)
End If
Catch ex As Exception
MsgBox([Ô]Erro: [Ô] & Err.Description, MsgBoxStyle.Critical)
Finally
cnn.Close()
cmd = Nothing

End Try
[ô]carrega_grid()

End Sub

Private Sub dgv1_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dgv1.CellBeginEdit
If dgv1.CurrentRow.IsNewRow Then
isNovo = True
End If
End Sub

Private Sub dgv1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv1.CellEnter

If e.ColumnIndex = 1 Then
dgv1.BeginEdit(True)

End If
End Sub

Private Sub dgv1_RowValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv1.RowValidated
isNovo = False
End Sub

Private Sub dgv1_RowValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dgv1.RowValidating
If dgv1.IsCurrentRowDirty Then
dgv1.CommitEdit(DataGridViewDataErrorContexts.Commit)
If isNovo = True Then
adicionar()
Else
atualiza()
End If
End If
End Sub
Private Sub dgv1_UserDeletedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles dgv1.UserDeletedRow
isNovo = True
End Sub

Private Sub dgv1_UserDeletingRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowCancelEventArgs) Handles dgv1.UserDeletingRow
Try
cnn.Open()

cmd = New SqlCommand([Ô]sp_D_deleta_grade[Ô], cnn)
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.Parameters.Add([Ô]@codgrade[Ô], SqlDbType.Int).Value = Me.dgv1.CurrentRow.Cells([Ô]Código[Ô]).Value
cmd.Parameters.Add([Ô]@codprod[Ô], SqlDbType.Int).Value = Me.txt1.Text

If cmd.ExecuteNonQuery <> 0 Then
MsgBox([Ô]Excluido com Sucesso[Ô], MsgBoxStyle.Information)
Else
MsgBox([Ô]A grade não foi excluida[Ô], MsgBoxStyle.Information)
End If
[ô]grid.Rows.Remove(dr)

Catch ex As Exception
MsgBox([Ô]Erro: [Ô] & Err.Description, MsgBoxStyle.Exclamation)
Finally
cnn.Close()
cmd = Nothing

End Try
[ô]carrega_grid()
End Sub

Private Sub dgv1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv1.KeyDown
If e.KeyCode = Keys.Enter Then
SendKeys.Send([Ô]{TAB}[Ô])
e.Handled = True
End If
End Sub
End Class
JABA 12/03/2012 16:33:11
#397000
eu coloquei esse codigo abaixo para rodar e funcionou perfeitamente.

Private Sub dgv1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles dgv1.KeyDown
If e.KeyCode = Keys.Enter Then
SendKeys.Send([Ô]{TAB}[Ô])
e.Handled = True
End If
End Sub
TECLA 12/03/2012 16:52:35
#397006
Tente o seguinte:

01. Selecione False para a propriedade MultiSelect.
02. Escreva as linhas no evento KeyPress

if e.keychar = chrw(keys.enter) then
dim r as integer = grid.currentrow.index - 1
dim c as integer = grid.currentcell.columnindex
grid.rows(r).cells(c).selected = true
sendkeys.send([Ô]{tab}[Ô])
end if

Veja se tem algum erro de sintaxe pois digitei direto no cel.
LUCASVAZ 12/03/2012 17:01:56
#397008
Acho que o erro do amigo Felipe, ocorre logo após ser digitado algo no datagrid, ai o código que eu e o Jaba postamos realmente não funcionaria...
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas