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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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?

  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 : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    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.

  3. #3
    Membre confirmé 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
    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" ?

  4. #4
    Membre confirmé 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
    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

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