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 :

[DesignTime] avertir "vs" que la propriété a été modifiée


Sujet :

VB.NET

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut [DesignTime] avertir "vs" que la propriété a été modifiée
    bonjour

    j'ai fait un smarttag pour un control (classe designer) et donc je modifie des propriétés
    le problème, c'est que vs n'est pas au courant, il n'y a pas l'étoile qui apparait pour dire que le fichier a changé et est sauvegardable (donc ca sérialise pas si je fais pas autre chose sur la fenetre)

    quelqu'un a deja trouvé ce qu'il faut faire ?

    merci
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 182
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 182
    Par défaut
    Bonjour.

    J'avais le même soucis, et de mémoire cela venait de l'absence de OnComponentChanged dans ma DesignerTransaction.

    Pour illustration, le code suivant fonctionne correctement :
    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
     
    Public Overrides Function EditValue(ByVal context As ITypeDescriptorContext, ByVal provider As IServiceProvider, ByVal value As Object) As Object
            If (Not provider Is Nothing) Then
                Dim service As IWindowsFormsEditorService = DirectCast(provider.GetService(GetType(IWindowsFormsEditorService)), IWindowsFormsEditorService)
                Dim host As IDesignerHost = TryCast(provider.GetService(GetType(IDesignerHost)), IDesignerHost)
                If ((service Is Nothing) OrElse (host Is Nothing)) Then
                    Return value
                End If
     
                Dim f As Form = CType(host.RootComponent(), Form)
     
                Dim selectionControl As _
                New CLFWAddToolTipControlsEditorFrm(DirectCast(value, CLFWAddToolTipControlHashTable), f)
     
                Using transaction As DesignerTransaction = host.CreateTransaction
     
                    context.OnComponentChanging()
     
                    service.ShowDialog(selectionControl)
                    'If selectionControl.Dirty Then
                    value = selectionControl.ToolTipControls
                    TypeDescriptor.Refresh(DirectCast(context.Instance, CLFWAddToolTip).Controls)
                    If (Not transaction Is Nothing) Then
                        transaction.Commit()
                    End If
     
                    context.OnComponentChanged()
     
                    Return value
                    'End If
                    'transaction.Cancel()
                End Using
            End If
            Return value
        End Function
    PS : je ne gére pas le cancel comme tu peux le voir.

    Cdt.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    ca m'a l'air pas mal
    me reste plus qu'à pouvoir y accéder
    je suis dans une classe designer, je vais voir si j'ai accès au service qui va bien ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    bon j'ai trouvé le service et ca donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectCast(_monobjet.Site.GetService(GetType(System.ComponentModel.Design.IComponentChangeService)), System.ComponentModel.Design.IComponentChangeService).OnComponentChanged(_monobjet, Nothing, Nothing, Nothing)
    c'est à peaufiner un peu, mais ca fait ce qu'il faut
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

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