2011-07-18 2 views
0

私はc#form1に乱数を作成してform2に表示し、form1に新たな乱数を作成し、secnd時間にform2を表示しようとすると最初に見た(フォーム2のデータは変更されません)。私はある人が助けることができれば感謝します。 Form1のとForm2のためのコードは以下の通りです。あなたが以前one.Tryを開いている 新しいForm2の()のショーを()新しいObject.Youを作成していないform2から何度も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

2番目の「secondForm.Show();」を実行するときに同じフォームを再利用しています。 Hide/Showを呼び出すと、フォームが表示/非表示になります。これを確認するには、Form2_Loadにブレークポイントを設定し、ヒットした回数を確認してください。

次置く場合:乱数(1,50)に第2回呼び出した後

secondForm = new Form2(); 

、あなたは異なる#Sを取得します。このことができます

希望、

ジョン

+0

ありがとうジョン、それは動作します。 –

0

、あなたが必要とするキーワード新しい

+0

はいform2を表示するたびにsecondForm –

+0

という名前の新しいオブジェクトを作成しました。新しいkeyword.otherwiseで作成する必要があります。作成した最初のものを表示します – Rasel

+0

はい、ありがとうRasel。 –

1

に注意してくださいActivateイベントでdisplyTextを呼び出します。フォームがロードされると、uをディスポーザルして新規に作成しない限り、2回呼び出すことはできません。

private void Form2_Activate(object sender, EventArgs e) 
    { 
     this.Invoke(new EventHandler(DisplayText1)); 
    } 
関連する問題