2014-01-05 39 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中的代码中 - 但这次您检查的窗口是否比允许的更少。 –