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 :

comment ouvrir une aboutbox ? [Débutant]


Sujet :

C#

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 940
    Points : 2 031
    Points
    2 031
    Par défaut comment ouvrir une aboutbox ?
    bonjour

    Je n'arrive pas à ouvrir une aboutBox que j'ai ajouté a mon projet via Projet->ajouter un formulaire windows -> boite a propos

    j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Apropos.ActiveForm.Show();
    mais il ne se passe rien

    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Apropos.ActiveForm.ShowDialog();
    mais me dit qu'il est déjà visible, qu'il faut le rendre invisible avant (mais je ne trouve pas la propriété Visible pour cet AboutBox...)

    J'ai essayé sans le ActiveForm, la méthode Show directement n'existe pas...

    bref, je m'y prends pas comme il faut

    Merci par avance
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    La propriété "ActiveForm" est une propriété statique issue de Form comme l'indique la documentation.
    Et cette propriété retourne le formulaire actif. Donc aucune chance qu'il te retourne ton AboutBox.

    Ton AboutBox est un objet, comme tout le reste, comme n'importe quelle fenêtre classique.
    Conséquence, il s'invoque comme ceci (en version modale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    using(Apropos a = new Apropos())
    {
        a.ShowDialog();
    }

  3. #3
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 940
    Points : 2 031
    Points
    2 031
    Par défaut
    Ouha... j'etais loin du compte vu que je comprends même pas la réponse !

    Je vais étudier le vocabulaire de cette magnifique réponse qui m'explique le pourquoi du comment

    Merci beaucoup !
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  4. #4
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 940
    Points : 2 031
    Points
    2 031
    Par défaut
    re,

    donc si je comprends bien AboutBox est une classe que je peux appeler plusieurs fois si je veux.

    Avec ce using je crée l'objet à partir de la classe puis je demande à l'afficher.

    Et si je comprends toujours bien, le using permet de libérer la mémoire qui a servi a construire l'objet dés que possible.

    J'ai un peu de bon ?

    en tous cas ça fonctionne très bien
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  5. #5
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Citation Envoyé par petitours Voir le message
    J'ai un peu de bon ?
    Presque tout
    Presque car le using n'est en rien responsable de la création de l'objet.
    Le mot clef using est un sucre syntaxique pour la construction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Apropos a;
    try
    {
        a = new Apropos(); // C'est "new" qui crée l'objet
        // ici on place le code qu'on aurait mis dans le block using :
        a.ShowDialog();
    }
    finally
    {
        a.Dispose();
    }
    Le but de ce code est qu'en cas d'exception ou de sortie de portée, l'objet créé dans les parenthèses en face du using (en l'occurrence "a") soit détruit correctement.

  6. #6
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 940
    Points : 2 031
    Points
    2 031
    Par défaut
    a ok

    j'avais du mal à piger l'histoire de la portée.

    En gros ça empêche que la destruction de l'objet nous échappe.
    Soit on arrive à l'ouvrir , soit on fait le ménage.

    Alala je gère jamais les try catch pour le moment... mais bon je vous apprendrai à faire du code qui try et réussi toujours ! Pas de doutes, ce n'est pas le mien mais c'est un métier !

    Merci beaucoup
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  7. #7
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    En C# les portées sont toujours clairement identifiées, elles sont représentées par les accolades.
    On peut imbriquer les portées les unes dans les autres, autant que l'on veut, on éviter d'en mettre trop sinon le code n'est plus lisible.
    Chaque portée peut accéder a son propre contenu ainsi qu'au contenus de tous ses parents.
    exemple :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    class MaClass
    { // Ouverture de la portée "MaClass"
     
        private string UneVariableMembre;
     
        public void UneMethode()
        { // Ouverture de la portée "MaClass::UneMethode()"
     
            // Ici on a accès à tout ce qui est déclaré dans MaClass::UneMethode()
            // Mais égale à tout ce qui est déclaré dans les parents, en l'occurrence MaClass
            UneVariableMember = "Je peux accéder à cette variable".
     
            string VariableLocale = "Cette variable est locale à la portée MaClass::UneMethode()";
     
        }// Fermeture de la portée "MaClass::UneMethode()"
     
        public void UneAutreMethode()
        { // Ouverture de la portée MaClass::UneAutreMethode()
     
            VariableLocale = "Cette ligne ne compilera pas car la portée MaClass::UneMethode n'est pas parente ce la portée MaClass::UneAutreMethode";
     
        } // Fermeture de la portée MaClass::UneAutreMethode()
     
        public void DerniereMethode()
        { // Ouverture de la portée MaClass::DerniereMethode()
     
            // Pour faire simple, il y a deux façon de sortir d'une portée :
            return; // La volontaire, d'autres mots clefs peuvent aussi permettre la sortie de portée.
     
            string Involontaire = null;
            Involontaire.Substring(1); // NullReferenceException, sortie de portée.
     
        } // Fermeture de la portée MaClass::DerniereMethode()
    } // Ouverture de la portée "MaClass"
    De façon générale, en .Net et dans tous les langages objet, tu ne peux pratiquement jamais garantir qu'une ligne de code fonctionnera sans exception. Par exemple, faire un "new" d'une classe, même une classe très simple, signifie qu'il y a allocation mémoire, résolution de type, peut être même d'assembly, probablement des cast (boxing/unboxing) etc...
    Rien que pour l'histoire de l'allocation mémoire tu ne peux être sûr et certain que la ligne fonctionnera sans problème. Tu peux tout à fait manquer de mémoire rendant l'allocation impossible.

    Pour ces raisons tu ne peux pas laisser de coté le système d'exceptions try/catch ou les constructions à base de using.

  8. #8
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 940
    Points : 2 031
    Points
    2 031
    Par défaut
    Merci pour ce petit cours particulier !
    Même après lu des cours et des tutos ca m'aide beaucoup !

    Mes connaissances en programmation viennent du C sur microcontroleur. Je n'ai donc aucun mal à percuter sur les contraintes matérielles du code (tel que l'allocation mémoire), mais la programmation objet reste une logique qui m'est beaucoup étrangère.

    Mais je commence à la voir enfin comme un avantage fort !

    Merci beaucoup
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Comment ouvrir une form dans un panel
    Par Le Basque dans le forum Windows Forms
    Réponses: 7
    Dernier message: 28/02/2007, 12h31
  2. [MFC] Comment ouvrir une autre dlg box
    Par spirit_1999 dans le forum MFC
    Réponses: 4
    Dernier message: 09/06/2005, 08h57
  3. [JFrame] Comment ouvrir une fenêtre maximiser
    Par dadg dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/12/2004, 18h38
  4. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 11h30
  5. Réponses: 1
    Dernier message: 31/10/2002, 11h55

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