2014-01-05 122 views
0

我正在編寫一個只能打開3個窗體的Windows應用程序(C#)。 當我點擊form1的按鈕時,form2將打開,但它只打開一次。狀態變量

我不知道爲什麼會發生這種情況。

你能幫我嗎?

謝謝!

這是我的Form1的代碼:

public partial class Form1 : Form 
{ 
    bool form2Opend = false; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (!form2Opend) 
     { 
      Form2 f2 = new Form2(this); 
      f2.Show(); 
      form2Opend = true; 
      string data = this.textBox1.Text; 
      f2.TextInTextBox(data); 
     } 
    } 

    public void TextInTextBox(string text) 
    { 
     this.textBox1.Text = tekst; 
    } 

    public void putStatusToOff() 
    { 
     this.form2Opend = false; 
    } 
} 

這裏是從窗口2

public partial class Form2 : Form 
{ 

    private Form1 f1; 

    public Form2(Form1 giveToForm) 
    { 
     f1 = giveToForm; 
     InitializeComponent(); 
    } 

    public void TextInTextBox(string tekst) 
    { 
     this.textBox1.Text = text; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     string dataFromForm2 = this.textBox1.Text; 
     f1.TextInTextBox(dataFromForm2); 
     f1.putStatusToOff(); 
     this.Close(); 
    } 
} 
+1

你是什麼意思的「不知道如何」?這是行不通的,還是那不是你的代碼? – nvoigt

回答

0

在你button1_Click方法我的代碼,你檢查的狀態變量form2Opend如果這個變量只開放形式設置爲false。如果你想要Form2的多個實例,你必須刪除該檢查:

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 f2 = new Form2(this); 
    f2.Show(); 
    string data = this.textBox1.Text; 
    f2.TextInTextBox(data); 
} 
+0

Thans但我希望你只能打開form2 3次。有沒有一種方法可以讓這種支票變得更快? – user3162520

+0

是的。您需要一個整數來跟蹤打開的窗口,然後將您的檢查放在button1_Click中的代碼中 - 但這次您檢查的窗口是否比允許的更少。 –