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

VB.NET Discussion :

Création d'un handle avec possibilité de faire e.Cancel ?


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut Création d'un handle avec possibilité de faire e.Cancel ?
    Bonjour,

    Aujourd'hui j'ai un UserControl qui représente une fenêtre dans une bibliothèque de classes utilisée pour avoir un environnement de travail avec des éléments dockables..

    Mon problème est qu'un UserControl possède un évènement Load mais pas Closing et j'aurais voulu créer cet évènement.. Dans l'idée, j'aurais aimé que dès qu'un appel de MaWindow.Close(), cela répercute l'évènement WindowClosing et par le biais d'un argument de type WindowClosingEventArgs, on puisse faire un e.Cancel pour annuler la fermeture.

    Est ce que c'est possible?

    Merci.
    J’ai des questions à toutes vos réponses!

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le plus simple, c'est sur ton UC de faire une fonction CanClose as boolean
    sur le formclosing, tu parcours tous les controles de ton form, pour ceux qui sont de ce type d'uc, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if leuc.canclose = false then e.cancel = false :exit for
    si le uc doit s'en occuper automatiquement, utile si tu as plusieurs forms qui ont ce uc dedans, il faut que le uc s'abonne à parentform.formclosing
    il reste alors à trouver quand parentform ne vaut plus nothing ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Alors en fait mon uc est une fenêtre, ce n'est pas un contenu.
    Je voudrait que si quelqu'un appelle la méthode MaWindow.Close() (que j'ai créée moi même), MaWindow déclenche un évènement WindowClosing qui, reçu par les abonnés leurs permet de faire un e.Cancel pour annuler..

    Par exemple (dans ma classe Window):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Private Sub PictureBoxClose_Click(sender As System.Object, e As System.EventArgs) Handles PictureBoxClose.Click
            Me.Close()
        End Sub
     
        Public Sub Close()
            RaiseEvent WindowClosing(Me)
     
            'possibilité d'attendre la mise à jour de canClose??
     
            If canClose Then
                Me.Dispose()
            End If
        End Sub
    J’ai des questions à toutes vos réponses!

  4. #4
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    En fait j'ai réussi..

    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
        Public Sub Close()
            Dim wch As New WindowClosingEventArgs
            RaiseEvent WindowClosing(Me, wch)
     
            If Not wch.Cancel Then
                Me.Dispose()
            End If
        End Sub
     
        Private Sub WindowClosing(sender As ABWWindow, args As ABWWindow.WindowClosingEventArgs) Handles Me.WindowClosing
            args.Cancel = True  '<-- j'empeche la fermeture, absurde mais c'était pour test..
        End Sub
     
        Class WindowClosingEventArgs
            Inherits EventArgs
     
            Public Property Cancel As Boolean = False
        End Class
    Merci quand même pour ton intervention.
    J’ai des questions à toutes vos réponses!

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

Discussions similaires

  1. Création site web avec possibilité de notation de bars, comment faire?
    Par silex54 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 07/12/2011, 12h00
  2. faire un set(handle) avec une fonction externe
    Par sellamelie dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 12/07/2011, 14h11
  3. Réponses: 2
    Dernier message: 26/03/2010, 13h13
  4. [Débutant]Possibilité de faire deux evenement avec onclick
    Par khalidlyon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2008, 16h45
  5. Réponses: 3
    Dernier message: 29/08/2007, 20h43

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