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 :

Copié Collé en C#


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Copié Collé en C#
    Bonjour,

    J'ai un petit problème avec mon copier-collé dans un tread.
    Voila le code :

    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 Form1()
            {
                InitializeComponent();
                Thread myThread;
                myThread = new Thread(new ThreadStart(MonThread));
                myThread.Start();
            }
     
            public static void MonThread()
            {
                while (Thread.CurrentThread.IsAlive)
                {
                    // Attente de 500 ms
                    Thread.Sleep(500);
           MessageBox.Show(Clipboard.GetText(TextDataFormat.Text));
                }
            }
    Le problème c'est que la MessageBox m'affiche rien or je fait des copié collé au format texte.
    Pourriez vous m'aider ? Merci

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Marrant.

    Si je fais :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static void Main(string[] args)
            {
                for (int i = 0; i < 100; i++)
                {
                    Thread.Sleep(500);
                    Console.WriteLine(Clipboard.GetText());
                }
             }
    ça marche pas, mais si je fais :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [STAThread]
            static void Main(string[] args)
            {
                for (int i = 0; i < 100; i++)
                {
                    Thread.Sleep(500);
                    Console.WriteLine(Clipboard.GetText());
                }
             }
    ça marche.

    Solution : il faut que ton Thread sont STA.
    Essayes donc de changer ton code comme suit :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myThread = new Thread(new ThreadStart(MonThread));
    myThread.SetApartmentState(ApartmentState.STA);
    myThread.Start();

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ha super !!
    Merci ça marche ^^
    Pourquoi doit on ajouter ça pour que ca marche?

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par damien50 Voir le message
    Pourquoi doit on ajouter ça pour que ca marche?
    Parce que
    Citation Envoyé par MSDN
    La classe Clipboard peut être utilisée uniquement dans les threads en mode STA (Single Thread Apartment). Pour utiliser cette classe, vérifiez que votre méthode Main est marquée avec l'attribut STAThreadAttribute.
    cf. http://msdn.microsoft.com/fr-fr/libr...clipboard.aspx

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    OKI merci

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

Discussions similaires

  1. Conserver la mise en page lors du copy/colle
    Par swissmade dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2007, 05h09
  2. [VBA-E]Copie/colle selon colonnes
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/04/2007, 09h13
  3. Bloquer le copié-collé
    Par F2S dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/08/2006, 20h25
  4. [javascript] Filtrer les copiés / collé HTML
    Par genova dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/06/2006, 15h06
  5. [VCL] Copié/collé d'un calque dans un TImgView
    Par dacid dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2005, 11h36

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