我的代碼:如何讓Form2當你點擊Button1時第二次沒有打開?
private void Button1_Click (object sender, EventArgs e)
(
Form2 f2 = new Form2();
f2.Show();
)
如何使使窗體2,當你點擊Button1的不是第二次打開,如果它是開放的?
遺憾的英語不好
我的代碼:如何讓Form2當你點擊Button1時第二次沒有打開?
private void Button1_Click (object sender, EventArgs e)
(
Form2 f2 = new Form2();
f2.Show();
)
如何使使窗體2,當你點擊Button1的不是第二次打開,如果它是開放的?
遺憾的英語不好
您必須確保您只創建了1個Form2
實例。要做到這一點的方法之一是對象的聲明和實例遷移到私有變量,並在點擊事件處理程序只需調用Show()
方法:
private Form2 f2 = new Form2();
private void Button1_Click (object sender, EventArgs e)
(
if(f2 == null)
{
f2 = new Form2();
}
f2.Show();
)
假設你的主窗體類是MyForm的,如下更新你的代碼。這個想法是隻保留Form2的單個實例。
public partial class MyForm: Form
{
public MyForm()
{
InitializeComponent();
}
private Form2 f2;
private void Button1_Click (object sender, EventArgs e)
(
if (null == f2 || f2.IsDisposed)
f2 = new Form2();
f2.Show();
)
}
如果Visible屬性會爲表工作,我沒有檢查,但你可以試試這個。
public partial class MyForm: Form
{
public MyForm()
{
InitializeComponent();
}
Form2 f2 = null;
private void Button1_Click (object sender, EventArgs e)
(
if(f2 == null)
f2 = new Form2();
if(!f2.Visible)
f2.Show();
)
}
非常感謝你 – Saska 2010-04-28 05:58:30
現有的答案相似,但有一個額外的事件處理程序:
private Form f2 = null;
private void Button1_Click (object sender, EventArgs e)
{
if (f2 == null)
{
f2 = new Form2();
// Make sure we don't try to re-show a closed form
f2.FormClosed += delegate { f2 = null; };
}
f2.Show();
}
此代碼將打開窗體。 如果以前沒有在應用程序中運行。
private void button1_Click(object sender, EventArgs e)
{
bool result = false;
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == typeof(Form2))
result = true;
}
if (result == false)
new Form2().Show();
}
當我關閉窗口2,然後嘗試打開,錯誤:訪問對象不能被佈置 – Saska 2010-04-28 05:50:02
@Saska的 - 你可能要檢查如果您單擊事件窗口2爲null。答案已更新。 – Oded 2010-04-28 05:51:28