IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Connaitre Objet pointé par un ContextMenuItem via plusieurs ToolStripMenuItem


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Connaitre Objet pointé par un ContextMenuItem via plusieurs ToolStripMenuItem
    Bonjour,

    Je suis débutant en C# et j'ai un probleme concernant la remonté d'arborescence.

    En gros J'ai un objet de type Button, quand je fais un clic droit dessus j'ouvre un ContextMenuItem dans lequel se trouve plusieurs ToolStripMenuItem ainsi que leurs sous menu.

    Voici la structure de mes items :

    ContextMenuStrip -> ToolStripMenuItem1 -> ToolStripMenuItem2 -> ToolStripMenuItem3

    Depuis Mon ToolStrip1 j'arrive à recuperer les informations de mon objet button :


    private void ToolStripMenuItem1_Click(object sender, EventArgs e)
    {
    ToolStripMenuItem toto = sender as ToolStripMenuItem;
    ContextMenuStrip id = toto.Owner as ContextMenuStrip;
    Button id_boutton = id.SourceControl as Button;
    MessageBox.Show("c'est l'icone numéro : " + id_boutton.Name.ToString());
    }

    Mon problème maintenant c'est que je veux retrouver les mêmes infos depuis un des sous menus(le 3ème) de type ToolStripMenuItem.



    private void ToolStripMenuItem3_Click(object sender, EventArgs e)
    {
    ToolStripMenuItem toto = sender as ToolStripMenuItem;
    ?????
    }


    J'ai essayé de faire ceci :

    je me suis dit qu'il me suffisait de caster le toto.OwnerItem.OwnerItem.Owner de mon ToolStripMenuItem3 en ContextMenuStrip, mais ca marche pas.


    private void ToolStripMenuItem3_Click(object sender, EventArgs e)
    {
    ToolStripMenuItem toto = sender as ToolStripMenuItem;
    ToolStripMenuItem tata = toto.OwnerItem as ToolStripMenuItem; // si j'affiche tata j'obtiens le ToolStrip2
    ToolStripMenuItem titi = tata.OwnerItem as ToolStripMenuItem; // Si j'affiche titi j'obtiens le ToolStrip1

    ContextMenuStrip tutu = toto.OwnerItem.OwnerItem.Owner as ContextMenuStrip;
    //ContextMenuStrip tutu = titi.Owner as ContextMenuStrip;

    Button id_boutton = tutu.SourceControl as Button;
    MessageBox.Show("c'est l'icone numéro : " + id_boutton.Name.ToString());
    }


    Dans le debug j'obtiens :

    titi.Owner est bien un ContextMenuStrip
    tutu est bien un ContextMenuStrip
    par contre tutu.SourceControl = null donc mon id_boutton = null


    Merci

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Solution simple (que j'utilise souvent, c'est peut-être pas la meilleure) : avoir une variable privée qui stocke ce dont on a besoin, et qui est initialisée à l'ouverture du premier menu. Donc à l'ouverture de ton contextmenu, tu gardes au chaud une référence vers le bouton sur lequel tu as cliqué.
    ಠ_ಠ

Discussions similaires

  1. Graphique : plusieurs point par colonne
    Par leyeno dans le forum Flex
    Réponses: 0
    Dernier message: 04/08/2011, 10h32
  2. Réponses: 7
    Dernier message: 12/10/2009, 10h58
  3. Couleur du pixel pointé par la sourie
    Par algerian dans le forum Windows
    Réponses: 4
    Dernier message: 16/08/2005, 18h22
  4. Réponses: 4
    Dernier message: 21/05/2004, 09h13
  5. [MATH] Point par rapport à une droite
    Par teska dans le forum Mathématiques
    Réponses: 6
    Dernier message: 14/05/2003, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo