Forum Clubic

Visual c# multi form ou muli thread

Bonjour,
Je cherche comment lorsque je fais appel à une nouvelle form bloqué ma fenêtre principal pour obligé la personne à utilisé le nouveau formulaire créer ou alors à lancer une nouvelle fenêtre dans un thread séparé et bloqué la fenêtre principal durant l’exécution du thread?

J’ai essayé de lancer le nouveaux thread comme ceci :
ThreadStart toto = new ThreadStart(new maFenetre().Show());
Thread titi = new Thread(toto);
titi.Start();

cela me retourne une erreur au niveau de l’argument de création du threadStart cela me marque " Nom de méthode attendu" ce que je ne comprend pas car Show() est une méthode de type void ce qui est demandé par le constructeur de threadstart.
merci d’avance pour vos reponse

A mon avis, sans faire de C#, ça ne passe pas par une autre thread…

Faut que tu ouvres une fenêtre modale (en principe, l’utilisateur ne pourra pas du tout revenir sur la fenêtre parente jusqu’à fermeture de la fenêtre modale).

Merci c’est bon j’ai trouvé un système je ne sais pas si c’est ce que tu avais proposer( car je n’ai pas compris ton terme de fenêtre modal) mais je fais en resumé

Mafenetre toto = new ma fenetre();
toto.owner = this;
MafenetreOwner.enabled = false;
toto.show();

et dans l’evenement FromClosed de toto
this.owner.enabled = true
Edité le 11/08/2008 à 15:41

Une fenêtre modale c’est justement ce que tu veux: ie une fenêtre qui est toujours par dessus là/les fenêtres parentes, et qui t’impose de t’en servir.

Exemple: essaye de faire un javascript:alert(‘Test’) dans ton navigateur: la fenêtre qui apparaîtra est modale.


; monForm est un objet Form
monForm = new MonForm();
monForm.ShowDialog(this);

Edité le 11/08/2008 à 22:28

En fait vous n’avez peu être pas bine compris ce que je veux
Je veux pouvoir faire d’une seule et même fenêtre qui va servir d’assistant à la création d’un objet qui va ensuite être envoyé vers une base de données
Je veux que dans cette fenêtre je puisse facilement faire apparaître et disparaitre des champs et des boutons en fonction de l’étape à laquelle je me trouve.
Et donc avoir à partir d’une seule fenêtre un truc qui sera considéré par l’utilisateur comme plusieurs fenêtres

Je ne vois pas où est le problème, il te suffit de créer une nouvelle instance de l’object à afficher (button, listbox, listview …), de le placer en x et y (left et top en vb .net) puis d’appeler la méthode Show() de l’objet :neutre:

Désolé mais je ne comprends pas ce que tu veux dire.
Peux-tu mettre un exemple avec du code s’il te plait


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WinForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Button btn = null;

            btn = new Button();
            btn.Size = new Size(128, 22);
            btn.Text = "Bouton dynamique";
            this.Controls.Add(btn);
        }
    }
}