J'ai un formulaire qui est ouvert en utilisant la méthode ShowDialog. Dans ce formulaire, j'ai un bouton appelé Plus . Si nous cliquons sur Plus, il devrait ouvrir un autre formulaire et fermer le formulaire actuel.
sur le gestionnaire d'événements Click du bouton More Button, j'ai écrit le code suivant
MoreActions objUI = new MoreActions ();
objUI.ShowDialog();
this.Close();
Mais ce qui se passe, c’est qu’il ne ferme pas le premier formulaire. Donc, j'ai modifié ce code pour
MoreActions objUI = new MoreActions ();
objUI.Show();
this.Close();
Ici, le deuxième formulaire est affiché et en quelques secondes les deux formulaires sont fermés.
Quelqu'un peut-il m'aider s'il vous plaît à résoudre le problème. Ce que je dois faire est, si nous cliquons sur le bouton Plus, il devrait ouvrir un autre formulaire et fermer le premier formulaire.
Toute aide me sera vraiment utile.
À mon avis, le formulaire principal devrait être responsable de l’ouverture des deux formulaires enfants. Voici un pseudo qui explique ce que je ferais:
// MainForm
private ChildForm childForm;
private MoreForm moreForm;
ButtonThatOpenTheFirstChildForm_Click()
{
childForm = CreateTheChildForm();
childForm.MoreClick += More_Click;
childForm.Show();
}
More_Click()
{
childForm.Close();
moreForm = new MoreForm();
moreForm.Show();
}
Vous aurez juste besoin de créer un événement simple MoreClick dans le premier enfant. Le principal avantage de cette approche est que vous pouvez le répliquer à votre guise et vous pouvez très facilement modéliser une sorte de flux de travail de base.
Si je vous ai bien compris, essayez-vous comme ça?
dans ceci?
dans votre Form1 , ajoutez cet événement à votre bouton:
// button event in your Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(); // Shows Form2
}
puis, dans votre Form2 ajoutez également cet événement dans votre bouton:
// button event in your Form2
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3(); // Instantiate a Form3 object.
f3.Show(); // Show Form3 and
this.Close(); // closes the Form2 instance.
}
ok donc j'ai utilisé ça:
public partial class Form1 : Form
{
private void Button_Click(object sender, EventArgs e)
{
Form2 myForm = new Form2();
this.Hide();
myForm.ShowDialog();
this.Close();
}
}
Cela semble fonctionner correctement, mais le premier formulaire est simplement masqué et peut toujours générer des événements. le "this.Close ()" est nécessaire pour fermer le premier formulaire mais si vous voulez toujours que votre formulaire soit exécuté (et ne se comporte pas comme un lanceur), vous DEVEZ le remplacer par
this.Show();
Bonne chance!
Je voudrais utiliser une valeur qui est définie lorsque plus de bouton est enfoncé, ferme la première boîte de dialogue, puis la forme originale teste la valeur et affiche ensuite la boîte de dialogue.
Pour l'ex
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool DrawText = false;
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
if (f2.ShowMoreActions)
{
Form3 f3 = new Form3();
f3.ShowDialog();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public bool ShowMoreActions = false;
private void button1_Click(object sender, EventArgs e)
{
ShowMoreActions = true;
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
Essaye ça..
//button1 will be clicked to open a new form
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false; // this = is the current form
SignUp s = new SignUp(); //SignUp is the name of my other form
s.Visible = true;
}
vous pouvez considérer cet exemple
//Form1 Window
//EventHandler
Form1 frm2 = new Form1();
{
frm2.Show(this); //this will show Form2
frm1.Hide(); //this Form will hide
}
Par exemple, vous avez une Button
nommée Button1
. Cliquez d'abord dessus pour ouvrir la EventHandler
de ce Button2
et appeler une autre Form
, vous devriez écrire le code suivant sur votre Button.
your name example=form2.
form2 obj=new form2();
obj.show();
Pour fermer form1, écrivez le code suivant:
form1.visible=false;
ou form1.Hide();
Vous pouvez essayer d'ajouter un bool pour que l'algorithme sache quand le bouton a été activé. Quand on clique dessus, la valeur booléenne est vérifiée, le nouveau formulaire est affiché et le dernier est fermé.
Il est important de savoir que les formulaires consomment un peu de bélier, c'est donc une bonne idée de fermer ceux que vous n'utiliserez pas au lieu de simplement les cacher. Fait la différence dans les grands projets.