Bonjour à tous et toutes,

J'aimerais savoir comment faire pour utiliser un ContextMenu, qui est crée dans "Form1", dans une autre form "Form2"?

Tout d'abord, voici comment je crée la Form2 dans Form1.cs, comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
private void Form1_Load(object sender, EventArgs e)
{
  Form2 desktopText = new Form2();
  desktopText.Show();
}

J'ai essayé ceci, dans Form2.cs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public Form2()
{
  InitializeComponent();
 
  label1.ContextMenu = Form1.contextMenu1;
}
Ce qui me donne ces erreurs:
erreur CS0122: 'AK.Form1.contextMenu1' est inaccessible en raison de son niveau de protection
erreur CS0120: Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'AK.Form1.contextMenu1'
J'ai donc essayé de modifier le contrôle dans Form1.Designer.cs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
//changé private en public
public System.Windows.Forms.ContextMenu contextMenu1;
Mais ça n'a résolut que la première erreur, mais pas la deuxième:
erreur CS0120: Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'AK.Form1.contextMenu1'

Cependant, je sais que je peux faire ceci:

Dans Form2.Designer.cs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
//changé private en public
public System.Windows.Forms.Label label1;
Dans Form1.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
private void Form1_Load(object sender, EventArgs e)
{
  Form2 desktopText = new Form2();
  desktopText.Show();
  desktopText.label1.ContextMenu = contextMenu1;
}
Ca fonctionne, mais j'aimerais savoir comment accéder à ce ContextMenu directement dans Form2.cs, sans devoir modifier Form1.cs.


Pouvez-vous m'aider SVP à comprendre mon erreur, ou y a t-il une meilleure méthode?

Merci d'avance et soyez indulgents je suis débutant