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 :

[C#] Problème action bloquante: chargement d'une form


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [C#] Problème action bloquante: chargement d'une form
    Bonjour,

    J'ai un nouveau problème.
    J'ai deux forms, form1 et form2.

    Dans form1, je remplis une listbox, puis lorsque je clique sur un bouton B1, je lance une nouvelle form (form2) qui récupère les données de la listbox et effectue un traitement.

    Mon problème, c'est que lorsque je clique sur le bouton B1, la form2 ne s'affiche qu'une fois tous les traitments faits !!!
    Je voudrais évidemment qu'elle s'affiche pour montrer les traitements.

    Voilà mon code.

    Dans form1.cs:
    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
    public partial class Form1 : Form
    {
    public string [] _myTab;
    public string _myPath;
    
    public Form1()
    {
    InitializeComponent();
    InitializeTooltip();
    }
    ...
    ......
    ........
    public string [] PassageListBox()
    {
    _myTab = new string[listBox1.Items.Count];
    for (int i = 0; i < listBox1.Items.Count; i++)
    {
    _myTab[i] = listBox1.Items[i].ToString();
    }
    return _myTab;
    }
    public string PassagePath()
    {
     
    _myPath = maskedTextBox1.Text;
    return _myPath;
    }
    public void Throw_Form2(object sender, EventArgs e)
    {
     
    Form2 F2= new Form2(PassageListBox(),PassagePath());
    F2.Owner = this;
    F2.Show();
    }
    }

    Et dans form2.cs:

    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
    public partial class Form2 : Form
    {
    private string one_pic;
    private string[] my_pics;
    private string my_path;
    public Form2()
    {
    InitializeComponent();
    }
    public Form2(string [] my_pics, string my_path) : this()
    {
    this.my_pics = my_pics;
    this.my_path = my_path;
    }
    public void Miniaturise(string [] my_pics, string my_path)
    {
    for (int i = 0; i < my_pics.Length; i++)
    {
    one_pic = my_path + "\\" + my_pics[i]; 
    label2.Text = my_path + "\\" + my_pics[i];
    Bitmap bmp = new Bitmap(one_pic);
    bmp.Save(my_path + "\\" + i + ".jpg");
    }
    }
    private void OnFormLoaded(object sender, EventArgs e)
    {
    Miniaturise(my_pics, my_path);
    }
    }
    
    la fonction OnFormLoaded étant déclenché sur l'évènement onLoad de la form2

    Comment remédier à ce problème ?
    Qu'est ce qui ne va pas dans ce code ??

    Merci pour vos réponses !!!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    enleve ton appelle a onFormloaded et met ton appel a
    Miniaturise(my_pics, my_path);
    juste apres ton appel a

    InitializeComponent(); de Form2
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Form2()
    {
    InitializeComponent();
    Miniaturise(my_pics, my_path);
    }


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Citation Envoyé par ekinox17
    enleve ton appelle a onFormloaded et met ton appel a
    Miniaturise(my_pics, my_path);
    juste apres ton appel a

    InitializeComponent(); de Form2
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Form2()
    {
    InitializeComponent();
    Miniaturise(my_pics, my_path);
    }

    Bonjour,

    lorsque je fait ceci, j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    La référence d'objet n'est pas définie à une instance d'un objet.
    lors de l'appel à la fonction miniaturise à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 0; i < my_pics.Length; i++)
    

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    oups desole j'avai pas vu que tu avait surcharger ton constructeur de Form2 ^^"
    Fait plutot ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Form2(string [] my_pics, string my_path) : this()
    {
    this.my_pics = my_pics;
    this.my_path = my_path;
    Miniaturise(my_pics, my_path);
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Citation Envoyé par ekinox17
    oups desole j'avai pas vu que tu avait surcharger ton constructeur de Form2 ^^"
    Fait plutot ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Form2(string [] my_pics, string my_path) : this()
    {
    this.my_pics = my_pics;
    this.my_path = my_path;
    Miniaturise(my_pics, my_path);
    }
    J'ai essayé ça aussi...
    Je n'ai plus d'erreur mais j'ai toujours le même problème !!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Je viens de trouver une solution mais je ne sais pas si c'est la meilleure.

    J'ai mis sur l'événement Shown de ma form2 la fonction OnFormLoaded qui appelle Minaturise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void OnFormLoaded(object sender, EventArgs e)
    {
    Miniaturise(my_pics, my_path);
    }
    
    Et dans la fonction Miniaturise(my_pics,my_path), je force le redessinement de la fenêtre à l'aide de this.update:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void Miniaturise(string [] my_pics, string my_path)
    {
    for (int i = 0; i < my_pics.Length; i++)
    {
    one_pic = my_path + "\\" + my_pics[i]; 
    label2.Text = my_path + "\\" + my_pics[i];
    Bitmap bmp = newBitmap(one_pic);
    bmp.Save(my_path + "\\" + i + ".jpg");
    this.Update();
    }
    
    Est-ce une solution convenable ????

    Je mets résolu mais s'il y a d'autres propositions, je veux bien les tester.

    Merci ekinox17.

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

Discussions similaires

  1. Problème de chargement d'une Form
    Par aiglelibre dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/05/2012, 14h58
  2. ProgressBar et chargement d'une form
    Par kritopal dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/06/2007, 00h15
  3. Problème lors du chargement d'une image gif
    Par pat-trix dans le forum Applets
    Réponses: 15
    Dernier message: 19/09/2006, 18h22
  4. Réponses: 4
    Dernier message: 27/07/2006, 14h28
  5. Réponses: 3
    Dernier message: 19/05/2006, 16h54

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