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 :

ContextMenuStrip.SourceControl ==> NULL ?


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut ContextMenuStrip.SourceControl ==> NULL ?
    salut,

    je cherche à récupérer les infos d'un controle parent d'un ContextMenuStrip.
    J'arrive à remonter "l'arbre" de ToolStripMenuItem jusqu'à la racine, mais l'appel à SourceControl me retourne null.

    Curieux, je test cette propriété SourceControl depuis un bouton tout bête, externe à tout le reste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void boutonTest_Click(object sender, EventArgs e)
            {
                  MessageBox.Show(this.ContextMenuStripTest.SourceControl.Name.ToString());
    }
    SourceControl retourne null ici aussi.

    J'associe pourtant tout comme il faut le ContextMenuStrip à mon contole...
    enfin, rien d'extraordinaire quoi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.bouton.ContextMenuStrip = this.ContextMenuStripTest;
    Le problème semble venir de plus haut, mais ou?...Quelqu'un a une idée?
    un tiens vaut pas mieux que zéro tu l'auras pas

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Le sourceControl n'est positionné que lors de l'activation du menu, ce qui n'est pas le cas si tu click sur ton bouton, mais ce qui est le cas si tu fait un click souris boutob gauche.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    ok, merci pour l'info, ca explique pourquoi l'activation externe ne marche pas.

    Mais j'ai toujours le même problème...

    J'ai tout repris : un bouton, un ContextMenuStrip avec un seul item, nommé b.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void bToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ToolStripMenuItem tsmi = sender as ToolStripMenuItem;
                ToolStrip ts = tsmi.GetCurrentParent();
                ContextMenuStrip cms = ts as ContextMenuStrip;
                MessageBox.Show(cms.SourceControl.Name.ToString());
            }
    Ca marche nikel.

    Je fais la même chose, avec un autre item "a" et 2 sous item (a--aa--aaa).
    Je place le code sur click de "aaa":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void aaaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ToolStripMenuItem tsmi = sender as ToolStripMenuItem;
                tsmi = tsmi.OwnerItem as ToolStripMenuItem;
                tsmi = tsmi.OwnerItem as ToolStripMenuItem;
                ToolStrip ts = tsmi.GetCurrentParent();
                ContextMenuStrip cms = ts as ContextMenuStrip;
                MessageBox.Show(cms.SourceControl.Name.ToString());
            }
    erreur : cms.SourceControl --> null
    pourtant j'ai bien parcouru l'arborescence à l'envers, cms est bien réel et correspond à l'item de base, nommé "a".

    une erreur de cast ? de "as" ?
    un tiens vaut pas mieux que zéro tu l'auras pas

  4. #4
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    Bon, après avoir tripatouillé assez longtemps, j'ai fini par utiliser une technique détournée évoquée ici, à savoir stocker dans une variable globale la référence du bouton lors de l'ouverture du ContextMenuStrip. J'accède à cette variable ensuite quand je le veux.

    Mais je reste sur ma faim avec cette solution bricolage, donc si quelqu'un à une explication sur ce SourceControl = null, je suis preneur
    un tiens vaut pas mieux que zéro tu l'auras pas

Discussions similaires

  1. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  2. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  3. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 10h17
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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