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

C# Discussion :

Communiquer avec les élements d'une frame


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 25
    Points
    25
    Par défaut Communiquer avec les élements d'une frame
    (Mon titre n'est pas très clair, ne vous y fiez pas.)

    Je voudrais initialiser un délégate depuis une mon XAML parent.

    Mon XAML parent (simplifié) contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        <Window x:Class="MONAPPLI.CParent" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
            <Grid >
                <TabControl Name="Tab_Onglets" Margin="0,0,204,22" IsSynchronizedWithCurrentItem="True">
                    <TabItem Name="Onglet_Accueil"  Header="Accueil">
                        <Frame Source="CPage_accueil.xaml" Name="OPage_accueil" />
                    </TabItem>
                    <TabItem Name="Onglet_habitation" Header="Lieu d'habitation">
                       <Frame Source="CPage_habitation.xaml" Name="OPage_habitation" />
                    </TabItem>
                </TabControl>
            </Grid>
        </Window>
    Le XAML "Tab_habitation" est quelconque (le problème ne vient pas de là) et son XAML.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        namespace MONAPPLI
        {
            public partial class CPage_habitation : Page
            {
                public CPage_habitation()
                {
                    InitializeComponent();
                }
     
                public delegate void NewLogEventHandler(int importance, string log);
                public event NewLogEventHandler NewLog;
                private void write_to_log(int importance, string log)
                {
                    if (NewLog != null)
                        NewLog(importance, log);
                }
            }
        }
    Quant à, maintenant, mon XAML.cs Parent, c'est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    using ...;
     
        namespace MONAPPLI
        {
            public partial class CParent : Window
            {
                public CParent()
                {
                    InitializeComponent();
                    Show();
                    write_to_log(3, "Chargée");
     
                    OTab_habitation.Loaded += Onglet_habitation_Initialized;
                }
                private void write_to_log(int importance, string log)
                {
                    MessageBox.Show("Debug : " + log);
                }
                private void Onglet_habitation_Initialized(object sender, EventArgs e)
                {
                    write_to_log(2, "Onglet Habitation Chargée");
                    OTab_habitation.NewLog += write_to_log;
                }
            }
        }

    Et maintenant THE question : pourquoi la ligne en gras et rose me met une erreur ?
    (L'erreur qu'il me met est que NewLog n'exiterait pas dans OTab_habitation et si je commente cette ligne le message de Debug "Onglet Habitation Chargée" apparait bien au moment de changer d'onglet.)


    Puis si vous vous demandez pourquoi je chercher à faire un delegate, la raison simplement (qu'entres autres !) je voudrai desactiver/activer les onglets en fonction de conditions définies dans les Frames (CPage_habitation, CPage_accueil, etc) hors je ne peux pas acceder aux propriétés des onglets depuis une Class enfant sur une Class parent sans utiliser de delegate ou de timer à ma connaissance (mais si vous connaissez un autre moyen, je suis tout ouie).



    Cordialement,
    Gomoz

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Je sais, ca fais un peu : "regardez l'éléphant rose"

    C'est la ligne "OTab_habitation.NewLog += write_to_log;" que je voulais mettre en rose . C'est elle qui bloque...

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    hors je ne peux pas acceder aux propriétés des onglets depuis une Class enfant sur une Class parent sans utiliser de delegate ou de timer à ma connaissance
    Pourquoi ne pas utiliser la programmation événementiel.
    Le parent déclenche un événement -> "Je veux telle propriété" ?
    L'enfant réagis en la renvoyant au parent et en lui rendant la main.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/09/2011, 13h58
  2. Communiquer avec les controles d'une fenetre
    Par theclem35 dans le forum Débuter
    Réponses: 1
    Dernier message: 20/06/2011, 08h56
  3. Réponses: 9
    Dernier message: 08/11/2007, 13h33
  4. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38
  5. [C#] Travailler efficacement avec les panels dans une forme
    Par WwiloO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 27/06/2005, 15h33

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