2011-07-18 84 views
0

我用c#form1創建了隨機數並在form2中顯示這些數字,並且我再次在form1中創建了新的隨機數,並且當我嘗試在secnd時間顯示form2時,我已經看到第一個不是第二次創建數字(form2中的數據不會更改)。如果有人能提供幫助,我將不勝感激。爲Form 1和Form中的代碼是:從form1中加載form2很多次

//form1 
public static int var2; 
Form secondForm = new Form2(); 

private void Form1_Load(object sender, EventArgs e) 
{ 
    var2 = RandomNumber(1, 50); 
    secondForm.Show(); 
    secondForm.Refresh(); 
    Thread.Sleep(2000); 
    secondForm.Hide(); 
    var2 = RandomNumber(1, 50); 
    secondForm.Show(); 
    secondForm.Refresh(); 
} 
private int RandomNumber(int min, int max) 
{ 
    Random random = new Random(); 
    return random.Next(min, max); 
} 
//form2 
private void Form2_Load(object sender, EventArgs e) 
{ 
    this.Invoke(new EventHandler(DisplayText1)); 
} 
private void DisplayText1(object sender, EventArgs e) 
{ 
    textBox1.AppendText(" "); 
    textBox1.AppendText(Form1.var2.ToString()); 
} 
+0

的WinForms或WPF? – Yuck

回答

0

當您執行第二個「secondForm.Show();」時,您正在重複使用相同的表單。當您調用隱藏/顯示時,您所做的只是使表單可見/不可見。要確認這一點,請嘗試在Form2_Load中設置斷點,並查看它被擊中的次數。

如果你把以下內容:

secondForm = new Form2(); 

第二個呼叫到RandomNumber(1,50)後,你會得到不同的#秒。

希望這有助於

約翰

+0

謝謝你約翰,它的工作原理。 –

0

你是不是創造新的Object.You正在打開以前one.Try 新的窗體2()顯示();注意關鍵字new

+0

是的,我確實創建了一個名爲secondForm –

+0

的新對象,每次顯示form2時,您都必須使用新的keyword.otherwise創建,您將顯示唯一創建的第一個對象 – Rasel

+0

是的它可以工作,謝謝Rasel。 –

1

您需要在Activate事件上調用displyText。表單加載一次不能被調用兩次,除非你處置並創建一個新的。

private void Form2_Activate(object sender, EventArgs e) 
    { 
     this.Invoke(new EventHandler(DisplayText1)); 
    }