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 :

problème de paramètre count dans la méthode invoke


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut problème de paramètre count dans la méthode invoke
    bonjour a tous ,
    j'effectue un interface qui est sensée retracer le périmètre d'un champ grâce au coordonnée gps.
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Threading;
     
     
    namespace WindowsFormsApplication11
    {
        public partial class Form1 : Form
        {
            /*
             besoin d'un thread pour appeler la richtextbox pour le portserie 
             car on ne peut pas acceder a partir du thread du portsrie 
             */
            Thread rtb;// creation du thread
            delegate void T();// creation du delegué
            T recup;// creation d'un delegue s'appelant recup
     
            // creation d'un tableau de points , d'une liste de point , et d'un point
            // le pointf est un point contenant une coordonnées 
            PointF pt=new PointF();// le point (coordonnées X et Y)
            List<PointF> mespoints=new List<PointF>();// la list de point 
            PointF[] tabpts;// tableau de points
     
            PointF coordonnees = new PointF();
            List<PointF> geodata = new List<PointF>();
            PointF[] coordon;
     
            // todo variable 
     
     
            // creation de variable pour les points entrés
            float nombrex, nombrey;
            int verbtnaff = 0;
            int degrelat,degrelong;
            decimal minutelat,minutelong,convlat,convlong,radlat, radlong;
     
     
            // declaration d'una variable pour le choix du port série à utiliser
            string choixport, choicecolor; 
            // declaration du pen 
            Pen greenpen = new Pen(Color.Green, 2); //definition d'un nouveau bic ,et de sa couleur , de la grosseur du trait
     
     
            public Form1()
            {
                InitializeComponent();
                recup= new T(recuperation);// méthode des délégués 
            }
     
            public void main()
            {}
     
            private void btnbalisage_Click(object sender, EventArgs e)
            {//attention par securité il faudra stopper les actions des boutons
                //affichage du btnretour menu 
                btnretour.Visible = true;
                //pour se reperer dans quelle partie du programme nous sommes 
                lblbalisage.Visible = true;
                lblchampsenregistre.Visible = false;
                lblparametres.Visible = false;
                // pour le demarrage du balisage 
                btndembal.Visible = true;
     
                richTextBox1.Visible = true;
                lblchoixport.Visible = true;
                cbxchoixport.Visible = true;
                btntestconex.Visible = true;
                btnenre.Visible = true;
                // action secondaire qui apparaitront lors de l'appui sur paramètre.
                btncolor.Visible = false;
                // action secondaire devront apparaître lors de l'appui sur champs enregistré
                btnouvrir.Visible = false;
                // fermeture du port série
                portserie.Close();
            }
     
            private void btnchampsenre_Click(object sender, EventArgs e)
            {//attention par securité il faudra stopper les actions des boutons
                //affichage du btnretour menu 
                btnretour.Visible = true;
                //pour se reperer dans quelle partie du programme nous sommes 
                lblbalisage.Visible = false;
                lblchampsenregistre.Visible = true;
                lblparametres.Visible = false;
                //supprimer les actions possibles des autres parties du programme 
                // supression du sousprogramme du bouton balisage
                btndembal.Visible = false;
                lblchoixport.Visible = false;
                cbxchoixport.Visible = false;
                btntestconex.Visible = false;
     
                richTextBox1.Visible = true;
                btnenre.Visible = false;
                // action secondaire qui apparaitront lors de l'appui sur paramètre.
                btncolor.Visible = false;
                // action secondaire devront apparaître lors de l'appui sur champs enregistré
                btnouvrir.Visible = true;
                // effecement de la picturebox 
                pictureBox1.Dispose();
                // rafraichir la richtextbox
                richTextBox1.Clear();
                // fermeture du port série
                portserie.Close();
            }
     
            private void btnparametres_Click(object sender, EventArgs e)
            {//attention par securité il faudra stopper les actions des boutons
                //affichage du btnretour menu 
                btnretour.Visible = true;
                //pour se reperer dans quelle partie du programme nous sommes
                lblbalisage.Visible = false;
                lblchampsenregistre.Visible = false;
                lblparametres.Visible = true;
                //supprimer les actions possibles des autres parties du programme 
                // supression du sousprogramme du bouton balisage
                btndembal.Visible = false;
                lblchoixport.Visible = false;
                cbxchoixport.Visible = false;
                btntestconex.Visible = false;
                richTextBox1.Visible = true;
                btnenre.Visible = false;
                btncolor.Visible = true;
                // action secondaire devront apparaître lors de l'appui sur champs enregistré
                btnouvrir.Visible = false;
            }
     
            private void btndembal_Click(object sender, EventArgs e)
            { // todo demarrer balisage
                //permet de creer le pen affin d'afficher 
                Graphics g = Graphics.FromHwnd(pictureBox1.Handle);   //encapsulage d'une surface de dessin , mise en lien
                //avec la picturebox
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //ligne de commande pour lisser la ligne
                //graphique tracée  
                greenpen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;      // ligne pour commander l'apparence de la ligne
                // permet de convertir la list de points en tableau de point grâce au pen appelé greenpen
     
                g.DrawLines(greenpen, tabpts);    // la methode drawlines dessine un segment d'un tableau
            //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;// pour une image 
                g.Dispose();                      // pour ne pas occuper de la memoire pour rien.
     
            }
     
     
     
            private void Form1_Load(object sender, EventArgs e)
            {
                retourload();//appel de la fonction retourload
            }
     
            private void btnretour_Click(object sender, EventArgs e)
            {
                retourload();// appel de la fonction retourload
            }
     
            void retourload() // création de la fonction qui retourne au menu principale 
            {
                // possibilité du menu principale 
                btnbalisage.Visible = true;
                btnparametres.Visible = true;
                btnchampsenre.Visible = true;
                // les trois label doivent etre visible pour afficher les choix possibles
                lblbalisage.Visible = true;
                lblchampsenregistre.Visible = true;
                lblparametres.Visible = true;
                //action secondaires qui apparaîtront lors de l'action sur les boutons du menu principale
                btndembal.Visible = false;
                lblchoixport.Visible = false;
                cbxchoixport.Visible = false;
                btntestconex.Visible = false;
     
                richTextBox1.Visible = false;
                btnenre.Visible = false;
                btnretour.Visible = false;
                // action secondaire qui apparaitront lors de l'appui sur paramètre.
                btncolor.Visible = false;
                // action secondaire devront apparaître lors de l'appui sur champs enregistré
                btnouvrir.Visible = false;
                //initialisation du premier point pour la picture box 
            }
            //todo richtextbox
            //private void txtbY_KeyDown(object sender, KeyEventArgs e)
            //{
            //    if (e.KeyCode == Keys.Enter) 
            //    {
     
            //        verbtnaff = verbtnaff + 1;// verifi btn afficher
            //        nombrex = Convert.ToSingle(txtbX.Text);
            //        nombrey = Convert.ToSingle(txtbY.Text);
     
            //        pointrich.X = nombrex;// seront les point affiché dans la richtextbox
            //        pointrich.Y = nombrey;
     
            //        richTextBox1.Text = richTextBox1.Text + pointrich + "\r"; // tout depend de la syntaxe pour la récuperation.
     
            //        // on r centre le point 
            //        pt.X = (pictureBox1.Width / 2) + nombrex; // permet de mettre en relation la textbox1 avec la coordonnée x du point pt
            //        pt.Y = (pictureBox1.Height / 2) - nombrey;// permet de mettre en relation la textbox2 avec la coordonnée y du point pt
     
            //        mespoints.Add(pt);// permet d'ajouter un point a la liste de point dont le point est appelé 
            //        // pt et dont les coordonnée sont (x,y)
            //        tabpts =  mespoints.ToArray();     // converti la liste de point en tableau de points  
            //    }
            //}
            private void cbxchoixport_SelectedIndexChanged(object sender, EventArgs e)
            {/* bouton pour choisir le choix du port utilisé  pour cela , 
                il suffit d'utiliser la propriété selecteditem du combobox "cbxchoixport"
                et de donner le nom au port serie grace au elements modifié préalablement.
              */
                portserie.Close();
                choixport = cbxchoixport.SelectedItem.ToString();
                portserie.PortName = choixport;
            }
            //desactivation de l'evenement sur le port série a dmd 
            private void btntestconex_Click(object sender, EventArgs e)
            {
                /* besoin de la methode try catch :
                 * si le port serie a un probleme lors du test de la connexion, c'est qu'il n'existe pas 
                 */
                try
                {
                    portserie.Open();
                    portserie.DtrEnable = true;
                    if (portserie.DsrHolding == true)
                    {
                        label1.Text = "ok";
                    }
                }
                catch (Exception)
                {
                    label1.Text = "pas de connexion";
                }
                }           
            private void btncolor_Click(object sender, EventArgs e)
            {// permet de changer la couleur du pen.
                colorDialog1.ShowDialog();
                choicecolor = colorDialog1.Color.ToString();
                greenpen.Color = colorDialog1.Color;
                //permet de creer le pen affin d'afficher 
                Graphics g = Graphics.FromHwnd(pictureBox1.Handle);   //encapsulage d'une surface de dessin , mise en lien
                //avec la picturebox
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //ligne de commande pour lisser la ligne
                //graphique tracée  
                greenpen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;      // ligne pour commander l'apparence de la ligne
                // permet de convertir la list de points en tableau de point grâce au pen appelé greenpen
                g.DrawLines(greenpen, tabpts);    // la methode drawlines dessine un segment d'un tableau
                g.Dispose();                      // pour ne pas occuper de la memoire pour rien.
     
            }
            private void btnenre_Click(object sender, EventArgs e)
            {//todo enregistrement 
                saveFileDialog1.ShowDialog();// faire apparaître la savefiledialog
                // permet de retranscrire le txt dans un fichier.text 
                saveFileDialog1.DefaultExt = ".txt";
                richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
            }
            private void btnouvrir_Click(object sender, EventArgs e)
            {
                OpenFileDialog dialog = new OpenFileDialog();// declaration d'une variable qui fait référence à un openfiledialog
                dialog.Filter = "Fichiers texte|*.txt";//definition de l'extention du fichier
                if (dialog.ShowDialog() == DialogResult.OK)// si l'on a appuyé sur ok de la fenetre openfiledialog
                {
                    richTextBox1.Text = File.ReadAllText(dialog.FileName);
                    // on lit le fichier dans la richtextbox
     
                    // ou encore :
                    // richTextBox1.LoadFile(dialog.FileName);
                }
            }
            /* a ne pas mettre dans un private void si non les fonction n porte pas 
            sur l'ensemble des fonction privée (fonction dite inaccessible)
            */
     
            void recuperation()//delegue
            {          
                // besoin de spliter 
                /* pour connaitre la distance entre deux point nous allons devoir calculer a formule du grand cercle qui elle demande au préalable de 
                   d'avoir les angle sous la forme de seconde */
                string[] donnees = data.Split(',');  // 
                richTextBox1.Text = richTextBox1.Text + donnees[3] + " " + donnees[5] + "\n";
                ///// la conversion fonctionne /////////
                // conversion de la latitude 
                degrelat = Convert.ToInt32(donnees[3].Remove(2,7));
                minutelat = Convert.ToDecimal(donnees[3].Remove(0,2).Replace(".",","));
                // conversion de la longitude 
                degrelong = Convert.ToInt32(donnees[5].Remove(3,7));
                minutelong = Convert.ToDecimal(donnees[5].Remove(0,3).Replace(".",","));
     
     
                // conversion en seconde//
                convlat = ((degrelat) * 3600) + (minutelat*60); // lattitude en seconde
                convlong = ((degrelong * 3600)) + (minutelong * 60);// longitude en seconde 
                label3.Text = convlat.ToString();
                label4.Text = convlong.ToString();
                // conversion en radian 
     
     
                ////todo recup        // calcul de distance 
                //radlat = ((3,14559 * convlat) / 648000);
                //radlong = ((3,14159 * convlong) / 648000);
                //label1.Text = radlat.ToString();
                //label2.Text = radlong.ToString();
                }
     
     
     
            string data;
            public void portserie_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
                data = portserie.ReadLine();
                // lecture du portserie et mise dans la
                // variable de type string "data"
                // demarrage du thread 
                if (data.IndexOf("$GPRMC") == 0)
                {
     
                    // lecture du portserie et mise dans la
                    // variable de type string "data"
                    // demarrage du thread 
                    rtb = new Thread(new ThreadStart(threadA));
                    rtb.IsBackground = true;//executé en arriere plan 
                    rtb.Start();
                }
     
            }
                void threadA()// thread
            { 
     
                Invoke(recup);
            }
                private void richTextBox1_TextChanged(object sender, EventArgs e)
                {
                }
     
     
     
                private void button2_Click(object sender, EventArgs e)
                {
                    portserie.Close();
     
                }
     
     
            }
        }
    mon problème se situe au niveau du l'invoke , il arrive temps en temps a ce que j'ai se message :
    l'index et le compte doivent faire références à un emplacement situé dans la chaine.
    nom du paramètre count.
    la trame que je reçois sur le RS232 est la trame NMEA 0183. ce dont j'ai besoin ce sont les coordonnées ( latutude et longitude) qui se situe au niveau du 3 ieme et 5 ieme argument de la phrase GPRMC.
    je ne comprends pas quelle est mon problème car je reçois la trame sour la forme :
    longitude : DDDMM,mmmm
    lattitude : DDMM,mmmm

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ce serait bien de ne poster que le code qui pose problème dans le futur, histoire de ne pas avoir à chercher. Surtout que tu n'indiques même pas dans tout ton code la zone qui pose problème.

    Je pense que l'erreur est liée à l'appel de la méthode Remove. Les paramètres indiqués font que l'on déborde peut-être de la chaîne d'entrée (index de départ + longueur renvoie sur une position hors de la chaine). Ceci devrait aller mieux probablement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // conversion de la latitude
    degrelat = Convert.ToInt32(donnees[3].Substring(0,2));
    minutelat = Convert.ToDecimal(donnees[3].Substring(2).Replace(".",","));
    // conversion de la longitude 
    degrelong = Convert.ToInt32(donnees[5].Substring(0,3));
    minutelong = Convert.ToDecimal(donnees[5].Substring(3).Replace(".",","));
    La prochaine fois debug ton code, Visual Studio permet de faire ça correctement

    Met des points d'arrêt, fait du pas à pas, regarde la valeur des variables, utilise les espions... Parce que honnêtement ton problème ne méritait pas une question si tu avais fais tout ça

    Au passage, ton thread ne sert à rien puisque tout le traitement est réalisé sur le thread graphique (tout le code est appelé dans Invoke).
    Pas de questions techniques par MP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    Si car sinon je ne sais pas faire interagir ma picturebox avec la dll du RS232 et j'en ai besoin ...

    Explique moi comment tu vois l'invoke pour moi etre sûre. je suis encore novice en la matière , donc si tu sais faire doucement avec moi ca serait gentil.

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Le but de la méthode Invoke c'est d'exécuter du code sur le thread qui se charge de l'UI. Généralement on s'en sert lorsqu'un autre thread doit modifier la partie graphique (affichage d'une progression par exemple) car seul le thread en charge de l'UI à le droit de faire ce type d'opération, sinon tu auras une belle exception (opération inter-thread non valide, cross-thread en anglais)

    Dans ton code, tu crées un thread et tu lui dis de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void threadA()
    { 
        Invoke(recup);
    }
    Comme tu passes par la méthode Invoke, tout le code va être exécuté sur le thread UI. Donc au final ton thread ne sert à rien.

    Quand on utilise Invoke, on ne doit le faire que pour la partie de code qui modifie la partie graphique. Par exemple on lance un thread qui effectue une opération plutôt longue, et seulement par moment on appelle Invoke afin d'afficher une progression.

    De plus, je ne vois pas l'intérêt de passer par un thread vu le code derrière. Rien qui ne soit gourmand en temps de traitement, donc l'interface ne sera pas figée.
    Pas de questions techniques par MP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    Je sais mais le probleme c'est que pour modifier le text dans la richtextbox , je ne peux pas le faire autrement :s ils me met justement ce message : probleme d'inter threats

    Sinon c'est quoi l'UI?

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par ojhoj
    Je sais mais le probleme c'est que pour modifier le text dans la richtextbox , je ne peux pas le faire autrement :s ils me met justement ce message : probleme d'inter threats
    Alors tu es probablement déjà dans un autre thread une fois dans le handler de l'événement DataReceived. Essaye en appelant juste Invoke sans créer de thread supplémentaire à ce moment.

    Citation Envoyé par ojhoj
    Sinon c'est quoi l'UI?
    UI = User Interface, donc la partie graphique de ton application.
    Pas de questions techniques par MP

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    appeler juste l'invoke comme une methode , mais je sais pas comment tu ferais , saurais tu me donner un exemple afin que je puisse le transposer ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    j'ai compris en cherchant un petit peu , merci beaucoup , je vais demander une prolongation de travail de fin d'étude , je pourrai avoir ton adresse mail si j'ai d'autre question ?

  9. #9
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par ojhoj
    j'ai compris en cherchant un petit peu , merci beaucoup
    De rien

    Citation Envoyé par ojhoj
    je pourrai avoir ton adresse mail si j'ai d'autre question ?
    Si c'est le cas continue sur le sujet actuel (pour tout ce qui concerne Invoke), ou bien ouvre un nouveau sujet
    Pas de questions techniques par MP

Discussions similaires

  1. Problème requête Toplink count(*) dans where
    Par probordelais dans le forum Persistance des données
    Réponses: 0
    Dernier message: 12/12/2011, 12h06
  2. Problème avec paramètre date dans Crystal Report
    Par callo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/10/2008, 18h44
  3. [MySQL] Plusieurs paramètres dynamiques dans une méthode ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/07/2008, 15h53
  4. Paramètre facultatif dans une méthode
    Par callo dans le forum C#
    Réponses: 4
    Dernier message: 26/06/2008, 17h45
  5. fonction count dans des paramètres
    Par flo456 dans le forum ASP
    Réponses: 11
    Dernier message: 18/11/2005, 08h33

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