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.
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:
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);
}
}
}