Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1277 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET2.0] Menu contextuel dans une cellule d'un datagridview

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#.NET2.0] Menu contextuel dans une cellule d'un datagridview

n°1429852
ParadoX
Posté le 23-08-2006 à 12:16:51  profilanswer
 


Bonjour,
 
J'ai un datagridview avec des fichiers listés dedans, dans la 1ere colonne. J'aimerais ajouter un menu contextuel, mais qui serait spécifique a une cellule, et non au datagridview entier (de sorte à editer une valeur concernant seulement le fichier choisi dans la liste).
 
Qqun a une idée ?
 
Merci d'avance :jap:

mood
Publicité
Posté le 23-08-2006 à 12:16:51  profilanswer
 

n°1429893
MagicBuzz
Posté le 23-08-2006 à 14:07:16  profilanswer
 

Je pense qu'on peut faire beaucoup mieux, mais ceci fonctionne :
 

Code :
  1. private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
  2.         {
  3.             if (e.Button == MouseButtons.Right && e.ColumnIndex != -1 && e.RowIndex != -1)
  4.             {
  5.                 DataGridViewCell c = ((DataGridView)sender)[e.ColumnIndex, e.RowIndex];
  6.                 c.ContextMenuStrip = contextMenuStrip1;
  7.                 c.ContextMenuStrip.Items[0].Tag = c;
  8.                 c.ContextMenuStrip.Items[0].Text = (string)c.Value;
  9.                 c.ContextMenuStrip.Show(this.Location.X + this.ClientRectangle.Location.X + ((DataGridView)sender).Location.X + e.X, this.Location.Y + this.ClientRectangle.Location.Y + ((DataGridView)sender).Location.Y + e.Y);
  10.             }
  11.         }
  12.         private void totoToolStripMenuItem_Click(object sender, EventArgs e)
  13.         {
  14.             MessageBox.Show(((DataGridViewCell)((ToolStripMenuItem)sender).Tag).ColumnIndex.ToString() + ", " + ((DataGridViewCell)((ToolStripMenuItem)sender).Tag).RowIndex.ToString());
  15.         }


 
PS: ça marche pas trop, au bout d'un certain nombre de clicks ça déconne, je te laisse trouver pkoi, ça me gave :D

n°1429896
ParadoX
Posté le 23-08-2006 à 14:09:22  profilanswer
 

Merci, je vais tenter ca :)
 :jap:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1429899
MagicBuzz
Posté le 23-08-2006 à 14:10:10  profilanswer
 

ps: c'est bien gore hein ;) si tu trouves mieux, n'hésite pas à poster ici ;)

n°1429909
ParadoX
Posté le 23-08-2006 à 14:25:21  profilanswer
 

Hmm je ne comprends pas trop la 2eme fonction ... quel est le "totoToolStripMenuItem" ? enfin quel rapport avec le context menu ?


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1429916
MagicBuzz
Posté le 23-08-2006 à 14:29:25  profilanswer
 

parceque j'ai fait un contextstringmenuchais pas quoi (pas toruvé le context-menu tout court ;))
 
j'ai créé un item bidon dedans, et j'ai indiqué quoi faire qd on double-click.
=> et du coup, dans la première fonction, j'associe juste le context-menu à ma cellule, et je change le libellé de l'item en question.
 
c'est juste un exemple

n°1429937
ParadoX
Posté le 23-08-2006 à 14:40:33  profilanswer
 

Hmm je n'ai pas trop compris, et je n'arrive pas à le faire marcher  [:ddr555]  
 
Si je résume:
 
Si on clic droit sur une cellule de mon datagrivdview, dans un intervalle autorisé, on crée une nouvelle céllule à l'endroit cliqué, on lui donne les valeurs de la cellule cliquée, et on l'affiche au dessus.  
 
Jusque la, j'ai bon ? :D
 
Puis ensuite, je vois pas le rapport entre la 1ere et la 2eme fonction !


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1429940
MagicBuzz
Posté le 23-08-2006 à 14:43:15  profilanswer
 

nan, c tout faux :D
 
dans ton designer, tu rajoutes un handler sur l'évènement "cellclick" de ton grid.
 
ensuite, dans ce handler, tu :
1/ récupère la cellule cliquée (attention, "cellclick" peut se déclencher même si on clique pas sur une cell :pt1cable: d'où mes != -1 ;))
2/ la fou dans l'objet tag de ton contextmenu (ouais, c'est crade :D)
3/ tu affiches le contextmenu
 
ceci dit, je suis persuadé qu'il y a bien plus propre comme technique, mais c'est vrai que c'est pas intuitif...


Message édité par MagicBuzz le 23-08-2006 à 14:44:02
n°1429951
ParadoX
Posté le 23-08-2006 à 14:49:59  profilanswer
 

Pfiouuu ca me balance une exception a la gueule, et ce, sans afficher le menu  [:ddr555]  
Moi aussi je suis sur qu'il y a plus simple :D
 
'vais continuer à tester ^^


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1430061
ParadoX
Posté le 23-08-2006 à 16:43:22  profilanswer
 

Hm j'ai avancé un peu, j'ai ca pour l'instant:
 

Code :
  1. Private void myDataGridView_CellContentClick(object sender, DataGridViewMouseEventArgs e)
  2. {
  3.     if(e.Button == MouseButtons.Right)
  4.     {
  5.           MessageBox.show("Clic Droit !" );
  6.     }
  7. }


Et ca fonctionne ^^
Maintenant, j'aimerais virer la messagebox, et y mettre un menu contextuel à la place. Comment faire ? :sweat:  
 


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le 23-08-2006 à 16:43:22  profilanswer
 

n°1430063
MagicBuzz
Posté le 23-08-2006 à 16:48:02  profilanswer
 

Arf, ouais, le coup du cellcontentclick, c'est plus mieux :)
J'étais resté bloqué par ma recherche infructueuse de "cellrightclick" :D
 
Ben maintenant, tu fais juste un show() sur ton contextmenu (c'est normalement un objet que tu as créé)

n°1430065
ParadoX
Posté le 23-08-2006 à 16:52:43  profilanswer
 

Bah oui mais comment j'etablis le rapport avec la cellule selectionnée ? et encore faut-il qu'elle devienne selectionnée, ce qui se fait normalement avec un clic gauche, et pas droit ! :D


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1430067
MagicBuzz
Posté le 23-08-2006 à 16:54:46  profilanswer
 

passe par la propriété Tag de ton objet contextmenu
 
ainsi quand tu cliqueras sur un item de ton contextmenu, en allant chercher son parent.tag tu trouveras les infos de la cellule cliquée

n°1430111
ParadoX
Posté le 23-08-2006 à 17:49:59  profilanswer
 

J'ai une autre solution, je tente ça ce soir, jte tiens au courant :sol: :D


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1430117
MagicBuzz
Posté le 23-08-2006 à 17:57:46  profilanswer
 

ok :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET2.0] Menu contextuel dans une cellule d'un datagridview

 

Sujets relatifs
[JSP/Servlet/Struts] barre de menu dynamique en Webmenu déroulant + photos et liens
[Perl][emacs] Liste des fonctions du programme dans le menu[SQL] Structure tables MySQL pour menu de Site Web, conseils
[RESOLU]Aligner Verticalement un texte en milieu de Cellule(VB.Net)Formatage au moment de la frappe dans un DataGridView
[C# 2005] synchroniser datagridview et detail viewVBA : modifier la valeur d'une cellule en appellant une function
Copie d'une cellule lors d'un chgt de valeurComment faire un menu fixe ?
Plus de sujets relatifs à : [C#.NET2.0] Menu contextuel dans une cellule d'un datagridview


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR