2016-07-30 38 views
0

我的目標是生成隨機數並插入4個不同的文本域。生成隨機數並插入文本域

我的代碼

protected void Generate_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = GenerateNumber().ToString(); 
    TextBox2.Text = GenerateNumber().ToString(); 
    TextBox3.Text = GenerateNumber().ToString(); 
    TextBox4.Text = GenerateNumber().ToString(); 
} 

private int GenerateNumber() 
{ 
    int i = 0; 
    Random rand = new Random(); 
    i = rand.Next(0, 100); 

    return i; 
} 

背後,但隨後在4個文本框產生4個相同的數字。

enter image description here

我想在不同的文本框不同的號碼不重複。

+1

從方法中移動'Random':'private static Random rand = new Random();' –

回答

0

有幾種方法可以生成不同的數字,以保持代碼的完整性。等等,例如:

傳遞一個額外的參數在你的方法GenerateNumber()

protected void Generate_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = GenerateNumber(36).ToString(); 
    TextBox2.Text = GenerateNumber(21).ToString(); 
    TextBox3.Text = GenerateNumber(77).ToString(); 
    TextBox4.Text = GenerateNumber(9).ToString(); 
} 

private int GenerateNumber(int a) 
{ 
    int i = 0; 
    Random rand = new Random(); 
    i = rand.Next(a, 100); 
    return i; 
} 

,或者如@Dmitry Bychenko告訴創建Random類的靜態對象的GenerateNumber()方法外:

private static Random rand = new Random(); 
private int GenerateNumber() 
{ 
    int i = 0; 
    i = rand.Next(0, 100); 
    return i;    
} 
1

您必須將rand放在方法之外,因此每次調用方法時都不會創建新方法。一種方法是將其作爲類的屬性。

Random rand = new Random(); 
protected void Generate_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = GenerateNumber().ToString(); 
    TextBox2.Text = GenerateNumber().ToString(); 
    TextBox3.Text = GenerateNumber().ToString(); 
    TextBox4.Text = GenerateNumber().ToString(); 
} 

private int GenerateNumber() 
{ 
    int i = 0; 
    i = rand.Next(0, 100); 
    return i; 
} 

另一種是把它作爲一個參數傳遞

private int GenerateNumber(Random rand) 
{ 
    int i = 0; 
    i = rand.Next(0, 100); 
    return i; 
} 

而且說實話,我不知道爲什麼你的東西,已經有一方法的方法。

protected void Generate_Click(object sender, EventArgs e) 
{ 
    Random rand = new Random(); 

    TextBox1.Text = rand.Next(0, 100).ToString(); 
    TextBox2.Text = rand.Next(0, 100).ToString(); 
    TextBox3.Text = rand.Next(0, 100).ToString(); 
    TextBox4.Text = rand.Next(0, 100).ToString(); 
}