首先我在Form1 中建立button1按鈕事件,我想點一下我的button1就能夠開啟另一個表單Form2,於是我在Click裡面寫上
Form2() open =new Form2();
但是當我每次按下按鈕,他就會生出一個新的Form2來,我該如何做到如果我已經開啟Form2,Form1上的按鈕就不在生成新的Form2而是將既有的Form2移到最上面,或是當我開啟Form2時,再按一下會變成把Form2關掉呢?
回覆一樓大大,我很菜還在學習,如果有什麼觀念補充的話請不吝指教,我也不知道怎麼在下面回覆,但是我想要的是我的Form1是還能動的
對,因為我第一次還第二次發問XD,感謝大大的回答,我學到了新的知識(非常感謝),但可能是我的發問不精確,我的想法是在我Form1的click裡判斷
if(Form2是開啟的狀態)
{
關閉開啟中的Form2
}
else
{
開啟Form2
}
也就是說我想要Form1的button變成一個開關,可以開關Form2,但是我不知道怎麼取得我正在執行的Form2,我對C#的概念還很淺,希望不吝指教謝謝。
如果照你的想法
只要每次都close在dispose就行
大概像下面這樣
public partial class Form1 : Form
{
Form2 form;
public Form1()
{
InitializeComponent();
// 因為你每次都要執行關閉所以先建立出來
form = new Form2();
}
private void button1_Click(object sender, EventArgs e)
{
form.Close();
form.Dispose();
form = new Form2();
form.Show();
}
}
如果要像我上面回的鎖住的話
要把show改成ShowDialog
這樣就不用每次都重新建立新視窗
一直都是用同一份
程式碼像下面這樣
public partial class Form1 : Form
{
Form2 form;
public Form1()
{
InitializeComponent();
form = new Form2();
}
private void button1_Click(object sender, EventArgs e)
{
form.ShowDialog();
}
}
補充你要的
要偵測目前開啟的狀況可以使用Application.OpenForms.OfType<Form>.any()
來偵測
上面Form要換成你目前的Form類別
整體大概像這樣
public partial class Form1 : Form
{
Form2 form;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (Application.OpenForms.OfType<Form2>().Any())
{
form.Close();
form.Dispose();
}
else
{
form = new Form2();
form.Show();
}
}
}