Créer une boite de dialogue

Signaler
Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
-
Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
-
bonjour!

j'ai un MenuStrip Fichier, Edition ....... ( dans Form1)
et dans le menu Fichier; il y a sous menu Ouvrir et Créer;
en cliquant sur ce sous menu Créer; il doit afficher une boite de dialogue qui est composée :
un text box + boutton Ok et Cancel,
 dans le text box, on doit entrer un nombre entre 1 et 13100(pour créer des lignes), en appuyant sur le boutton Ok,
il doit afficher Form2 avec le nombre de ligne voulu.
et cette  form2 doit être la fille de la form1.

ma question:
puisque InputBox n'existe pas en C#, donc je ne sais pas si je dois créer ma boite de dialogue avec les WindowsForm ou avec une autre méthode?

si quelq'un peut me dire comment dois-je faire?

 Merci

9 réponses

Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
1
j'ai écrit ce code dans Form1 :

private
void créerToolStripMenuItem1_Click(
object sender,
EventArgs e){

MgsBox =

new
DialogBox();MgsBox.ShowDialog();

//MgsBox.Close();

if (MgsBox.ShowDialog() ==
DialogResult.OK){

Fenêtre_Armure Dessin; // correspond à ma form3Dessin =

new
Fenêtre_Armure();Dessin.MdiParent =

this;MgsBox.Close();

}

}

et dans la Boite de Dialogue (Form2)j'ai mis ce code:
// propriété Publique:

private
int iConvert;

public
int Result{

get {
return iConvert; }}

private

void Valider_Click(
object sender,
EventArgs e){

if (bTest ==
true) // la valeur doit être entere 1 et 13100

{

Fenêtre_Armure Dessin;Dessin =

new
Fenêtre_Armure();Dessin.Rangee =

this.Result; // propriété publique pour récuperer la valeur entrée dans textboxDessin.Show();

}

else{

if (bTest ==
false){

MessageBox.Show(
"le nombre est compris entre 1 à 13100",
"ATTENTION!");

this.Close();}

}

}

et dans Form3:
je récupère la valeur entrée dans textbox avec cette propriété:
// Variable priv‚e de la propri‚t‚ Rangee

private
int iRangee;

//propri‚t‚ pour r‚cup‚rer les informations

public
int Rangee{

get {
return iRangee; }

set { iRangee =
value; }}

mais il m'affiche deux fois ma form3 et la Boitede dialog, lorsque j'appelle ma form3 à partir de Form1, if

(MgsBox.ShowDialog() ==
DialogResult.OK)
si tu peux me donner une idée ou une solution

Merci
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
En effet pour faire ce que tu veux faire, il faut utiliser une Form, dans laquelle tu vas mettre les contrôles dont tu as besoin. Et tu appelera ensuite cette Form par myForm.ShowDialog().
Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
1
merci pour la réponse, mais comme je doit créer 3 Forms:
Form1 pour le MenuStrip: Fichier-> Créer
puis la Form2 pour ma Boite de Dialogue avec le textbox + boutton Ok et Cancel
puis ma form3 pour créer le nombre de lignes voulues, entré dans le text box aprè  avoir appuyer sur le bouton Ok.

mais le comment je doit écrire mon code pour que ma Form1 soit MdiParent de Form3?
car je crée ma Form3 en  passant par ma  boite de dialogue qui est ma Form2.

 quelq'un a une idée?

merci
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
Si tes form 2 et 3 ne sont que des boites de dialogues, à ta place je ne passerai pas par des MDI. Tu peux simplement appeler form2 depuis form1, et tu peux ensuite apperler form3 depuis form2 ou form1 selon tes besoins.
Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
1
il y a que ma Form2 qui est ma boite de dialogue,
et ma Form1 doit être MdiParent de ma Form3 qui est MdiChild, pour que je puisse faire des modifictations à partir du MenuStrip créé dans Form1.

et Form2 c'est juste une boite de dialogue utilisée en intermédiaire pour créer ma Form3, en récupérant la donnée entrée par utilisateur dans la textbox.

en quelque sorte je doit  créer un Editeur d'Armure.

Merci .
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
Et bien dans ce cas, dans form2 du stocke la réponse de l'utilisateur (dans une propriété publique par exemple). Tu affiche form2 depuis form1, et ensuite à la fermeture de form2, tu récupère la valeur saisie et tu créé form3 depuis form1.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
Je pense que tu t'es mélangé les pinceaux (tu appelles plusieurs fois ShowDialog sur tes fenêtre, normal qu'elles s'affichent plusieurs fois).... Voila de tête (pas testé ni même compilé) ce que tu pourrais faire :

------------------------------------------------------
Dans ta form2 :
------------------------------------------------------
int result;

private Valider_Click(object sender, EventArgs e)
{
    // Si la valeur saisie est OK, on la stocke dans la varialbe result
    result = int.Parse(monTextBox.Test);
    DialogResult = DialogResult.Ok;
    Close();
}

public int Result
{
    get
    {
       // Renvoie le contenu de la variable result
       return(result);
    }
}

------------------------------------------------------

Dans ta form3 :


------------------------------------------------------

// Copie locale où sera stocjée la valeur saisie dans form2
int nbLignes;

// Surcharge du constructeur, prenant en paramètre la valeur saisie dans form2
public Form3(int nbLignes)
{
    // On stocke la valeur passée en paramètre pour pouvoir s'en resservir
    this.nbLignes = nbLignes;
    InitializeComponents();
}

------------------------------------------------------
Dans ta form1 :

------------------------------------------------------
Form2 form2 = new Form2();
DialogResult res;
// Affiche form2 et attend qu'elle soit fermée
res = form2.ShowDialog(this);
// form2 est maintenant fermée
if(res == DialogResult.Ok)
{
    // On récupère la valeur saisie dans form2
    int nbLignes = form2.Result;
    // On affiche form3, on lui passant la valeur saisie dans form2
    Form3 form3 = new Form3(nbLignes);
    form3.MdiParent = this;
    // On affiche form3
    form3.Show();
}
Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
1
ça marche comme! mais  dans ma Form2 (Boite de dialog),si bTest = false, il ya un message qui doit afficher + un bouton Ok.
quand j'appuie sur Ok il doit afficher encore une fois la boite de dialog pour entrer le nombre exate, mais lui il m'affiche Form3.

j' ai mis se code :

private
void Valider_Click(
object sender,
EventArgs e){

if (bTest ==
true)

{

// ce code est juste, celui que tu m'avais donnéiConvert int.Parse(textBox1.Text);DialogResult

DialogResult.OK;Close();

}

else{

// si je rentre un valeur qui n'est pas entre 1 et 13100, affche message d'erreur + boutton Ok
if (bTest ==
false){

MessageBox.Show(
"le nombre est compris entre 1 à 13100",
"ATTENTION!");

}

}

}
si tu as un idée pour qu'il maffiche la boit de Dialog (Form2) si je click sur Ok

merci encore une fois
Messages postés
75
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
19 février 2009
1
bonjour
ça marche!!!

il suffit de mettre :

if (bTest == False)
{
      DialogResult =
DialogResult.No;

     MessageBox.Show(
"le nombre est compris entre 1 à 13100",
"ATTENTION!");
 }

c'est Cool quand ça marche!!!!!