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 :

VB2005 express - save clipboard


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut VB2005 express - save clipboard
    pour insérer une image dans un richTextBox, j'utilise le clipboard (truc trouvé), cela fonctionne mais comme c'est un peu bancal, je sauvegarde quand meme le clipboard avant... sauf que cela ne marche pas !

    je ne veux pas tester chaque type de données eventuellement present dans le clipboard et j'ai tenté :

    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
    Public Sub ajouteRichTextBoxImage(ByVal imgFilename As String, ByVal rtb As RichTextBox)
       Dim img As Bitmap = New Bitmap(imgFilename)
     
       ' save le clipboard   
       Dim saveClipBoardValue As DataObject = CType(Clipboard.GetDataObject, DataObject)
     
       ' utilise le clipboard pour obtenir l image
       My.Computer.Clipboard.SetImage(img)
       rtb.SelectionStart = 0
       rtb.SelectionLength = 0
       rtb.Paste()
     
       ' restore le clipboard
       My.Computer.Clipboard.SetDataObject(saveClipBoardValue)
     
    End Sub
    probleme :
    Clipboard.GetDataObject est un system.windows.forms.idataobject et
    Clipboard.SetDataObject est un system.windows.forms.dataobject

    du coup je tente un ctype(idata..., data...) mais à l'arrivée le clipboard contient toujours l image que j'ai mis !

    pourquoi cela ne marche pas ?

    k'esce ki fo ke j'fai ?

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

    J'avais vu un truc un peu plus propre que l'utilisation du clipboard, si ça t'interesse :
    http://www.codeproject.com/KB/edit/csexrichtextbox.aspx

    Cdt.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    essaie comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Computer.Clipboard.SetDataObject(saveClipBoardValue, True)

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut
    merci pour vos réponses

    olsimare :

    j'avais déjà vu cette page mais c'est en C# ou C++ ... et moi le C
    mais je vais quand même essayer de convertir en VB


    tomlev:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    My.Computer.Clipboard.SetDataObject(saveClipBoardValue, true)
    ne marche pas chez moi, true c'est la persistence a la sortie du prog, mais je n'ai pas cette surcharge !!! peut etre parce que j'ai un VB Express ?
    De toute façon j'ai testé le contenu du presse-papier et en sortie de ma proc j'ai toujours l'image !

    merci à vous

    Pascal

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lacsap49 Voir le message
    ne marche pas chez moi, true c'est la persistence a la sortie du prog, mais je n'ai pas cette surcharge !!!
    Ah ok, je vois le problème... c'est parce que tu utilises My.Computer.Clipboard, qui est de type ClipboardProxy. Moi j'ai fait un test avec la classe System.Windows.Forms.Clipboard, qui propose cette surcharge.
    En fait en testant j'ai observé que la restauration du clipboard était effective uniquement dans l'application, et en essayant avec true ça marchait bien...

    Citation Envoyé par lacsap49 Voir le message
    peut etre parce que j'ai un VB Express ?
    Non, VB Express utilise le même framework que la version complète. La seule chose qui change c'est l'IDE.

    Sinon, concernant le lien fourni par olsimare, c'est peut-être plus "propre", mais tellement plus galère qu'à mon avis ça ne vaut pas le coup...

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Par défaut
    tomlev merci merci merci !!!

    ça y est cela fonctionne, ce qui est bizarre, c'est que j'ai trouvé plein d'usines à gaz pour sauvegarder le contenu du clipBoard avec test de chaque type de données, etc...

    donc l'idée de copier l object clipboard et de le restituer ensuite me semblait la solution la plus légère !

    bon pour les suivants, le code qui va bien pour sauvegarder le presse papier. la sub insère une image dans un RTF et save et restore le presse papier ( attention elle insère l'image au debut du texte car dans mon cas je génère un HTML et c'est la feuille de style qui se chargera de mettre l'image au bon endroit!)...

    Merci encore (allez un p'tit smile )

    Pascal

    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
    Public Sub ajouteRichTextBoxImage(ByVal imgFilename As String, ByVal rtb As RichTextBox)
            Dim img As Bitmap = New Bitmap(imgFilename)
     
            ' save le clipboard
            Dim saveClipBoardValue As IDataObject = CType(Clipboard.GetDataObject, DataObject)
     
            System.Windows.Forms.Clipboard.SetImage(img)
            rtb.SelectionStart = 0
            rtb.SelectionLength = 0
            saveHtmlFile()
            rtb.Paste()
     
            ' restore le clipBoard
            System.Windows.Forms.Clipboard.SetDataObject(saveClipBoardValue, True)
     
    End Sub

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Sinon, concernant le lien fourni par olsimare, c'est peut-être plus "propre", mais tellement plus galère qu'à mon avis ça ne vaut pas le coup...
    Salut,

    juste pour reagir, d'un point de vue utilisateur.

    Pour ma part, j'utilise un gestionnaire de clipboard (Ditto ! [pub,pub !]), et le probleme de trafiquer le clipboard sans l'aval de l'user, c'est que tous les programmes de ce genre vont devenir fou. Bref, d'un point de vue pratique, c'est vraiment pas top, de meme d'un point de vue "guidelines", le clipboard n'a pas (jamais!) a etre utilisé par un programme sans l'intervention de l'user, c'est une zone utilisateur, il existe d'autres moyens (genre au dessus).

    Donc bref, en un mot : caypabien (mais c'est plus facile, c'est sur) !

    "my 2 cents"

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

Discussions similaires

  1. [VB2005 Express] Connexion MySQL
    Par madevilts dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/07/2007, 11h14
  2. requete SQL vb2005 express
    Par philguio dans le forum Accès aux données
    Réponses: 2
    Dernier message: 13/04/2007, 21h00
  3. [vb6-->vb2005 express] Probleme de migration
    Par PSYcoZZ dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/03/2007, 15h15
  4. Réponses: 2
    Dernier message: 17/10/2006, 23h55
  5. [IDE][VB2005 Express]Comment utiliser SQLServer via ODBC?
    Par BillyboyK dans le forum Visual Studio
    Réponses: 8
    Dernier message: 27/03/2006, 11h31

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