Aller au contenu

DataGridView et menu contextuel


Messages recommandés

Bonjour,

 

ça n'a rien à voir avec AutoCAD, c'est un pb C# pur, mais il y a des personnes très compétentes sur ce forum et je me permets de poster ici.

 

J'essaie de gérer l'affichage d'un menu contextuel sur le clic droit dans une cellule (colonne) d'une DatagridView. Je réagis sur l'évènement CellMouseUp qui m'envoie en argument un "DataGridViewCellMouseEventArgs" sur lequel je récupère mon ColumnIndex et RowIndex pour savoir quelle cellule se trouvait sous la souris. Cet argument me renvoie aussi les coordonnées X, Y à partir du point haut gauche de ma Cellule => OK

Lorsque je veux faire afficher mon menu contextuel j'utilise

_ctmForDesign.Show(dgvRoom, new Point(e.X, e.Y));

Le 1er argument c'est le contrôle correspondant à ma Datagrid et ensuite c'est le point d'insertion, le problème c'est que ça me l'affiche en relatif par rapport au coin HautGauche de ma grille et pas par rapport au point HautGauche de ma cellule.

Comme je n'arrive pas à passer ma cellule comme contrôle en 1er argument (en tant que Contrôle), est-ce que je suis obliger de recalculer le X,Y absolu de ma cellule (balayage des hauteurs derangées et de colonnes) par rapport à la grille? ou bien y a-t-il une autre solution.

 

J'espère avoir été assez clair.

 

Merci.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Normalement il suffit d'assigner ton menu contextuel à la propriété ContextMenuStrip de ton dataGridView :

 

this.dataGridView1.ContextMenuStrip = this.contextMenuStrip1;

 

Le contrôle DataGridView se charge ensuite de positionner correctement le menu.

 

Sinon pour convertir du système de coordonnées de la cellule au système de coordonnées de la grille, tu peux utiliser GetCellDisplayRectangle :

 

var dgv = (DataGridView) sender;
Rectangle rect = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
contextMenuStrip1.Show(dgv, new Point(rect.Left + e.X, rect.Top + e.Y));

Maxence DELANNOY

Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO

WIIP - http://wiip.fr

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité