Usuário com melhor resposta
Usando o evento MouseClick???

Pergunta
-
beleza pessoal? estou querendo fazer algumas coisas diferente no meu sistema, e queria usar mais o evento MouseClick, e queria ajuda em uma situação, eu preencho uma grid com um cadastro de clientes e preencho um arraylist com id corresponde a cada cliente correto??
quando eu dou dois clicks na grid, eu abro a tela para editar o cadastro e pego o id da seguinte maneira:
Code Snippetid = Convert.ToInt32(this.arrMeuArrayList[this.grid.CurrentRow.Index]
agora eu quero clicar na grid com o botão direito e abrir um menuzinho igual quando clicamos em um lugar com o botão direito, mais não consigo pegar o id dessa forma, como posso fazer????
eu fiz isso por enquanto
Code Snippetprivate void grid_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{preciso pegar o ID aqui, da linha que eu clicar}
}
eu preciso pegar o id da linha que eu clicar com o botão direito, lembrando que quando eu clico com o botão direito eu não seleciono a linha, eu apenas clico...
ps: existe algum componente que abre o menuzinho quando eu clico com o botão direito, ou eu crio um painel com os itens que eu quero e deixo visible true quando eu clico na linha????
me ajudem por favor...
Respostas
-
Olá Klayton, não recebi o seu email mais tudo bem, consegui a solução do problema, mto obrigado, vou deixar aqui pra quem precisar...valeu.
Code Snippet
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
dataGridView1.AccessibilityObject.HitTest(MousePosition.X, MousePosition.Y).Select(AccessibleSelection.TakeSelection);
}
Todas as Respostas
-
-
Oi Ricardo, obrigado pela sua ajuda, eu linkei o ContextMenuStrip com minha grid, agora aparece o menu bonitinho, mais ainda não estou conseguindo pegar o valor da linha que eu clico, vc sabe como eu pego esse valor??
estou pesquisando, se vc conseguir me ajudar valeu... -
Guilherme
ver bem fiz um exemplo aqui nao sei se é exatamente o que voce estar querendo mais ver ai se ajuda.
eu peguei o index da primeira linha que estar selecionada.
void
dataGridView1_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e){
if (e.Button == MouseButtons.Right){
int id = dataGridView1.SelectedRows[0].Index;}
}
-
Olá Klayton, eu fiz isso tbm, ele funciona pq a linha com indice '0' já está selecionada, o problema é com as outras, eu queria uma forma de quando eu clicar com o botão direito eu marcar a linha, pq dai fica facil de trabalhar, mais não consigo selecionar a linha com o botão direito..mais mto obrigado pela sua ajuda. valeu
-
Detalhe guilherme
quando voce utiliza o SelectedRows ele traz um array de linhas que estao selecionadas
exemplo se voce selecionou a terceira, quarta e quinta linha do seu grid quando voce for ler sera
int lprimeiraLinhaSelecionada = dataGridView1.SelectedRows[0].Index;
int segundaLinhaSelecionada = dataGridView1.SelectedRows[1].Index;
int terceiraLinhaSelecionada = dataGridView1.SelectedRows[3].Index;
e assim sucessivamente entao o SelectedRows traz um array de linhas que estao selecionadas no seu grid view
-
eu entedi sim Klayton, o problema é que:
quando eu abro a janela a grid já vem preenchida e com a primeira linha selecionada correto??? e quando eu vou clicar em outra linha com o botão direito a primeira linha ainda fica selecionada, eu queria que quando eu clicasse com o esquerdo ou direito a linha que eu clicar ficasse selecionada, pq dai eu posso pegar a linha selecionada pra trabalhar, ao inves de selecionar a linha com o esquerdo e depois clicar com o direito pra abrir o ContextMenuStrip...desse jeito que vc me explicou eu não consigo fazer....vc poderia me dar um exemplo ou tentar explicar de uma forma melhor??? eu compreendo o que vc disse, mais não consegui implementar.....
mais obrigado mesmo. -
-
Olá Klayton, não recebi o seu email mais tudo bem, consegui a solução do problema, mto obrigado, vou deixar aqui pra quem precisar...valeu.
Code Snippet
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
dataGridView1.AccessibilityObject.HitTest(MousePosition.X, MousePosition.Y).Select(AccessibleSelection.TakeSelection);
}