我有点困在我正在做的事情上......我有一个带有不同按钮的Windows窗体应用程序,每个按钮应该做不同的事情。现在我的问题是:
在一个按钮上,当我按下它时,它应该生成随机数字(例如0-1000)并在文本框中显示数字,我也在程序中显示。我尝试在按钮上执行此代码:
private void button5_Click(object sender, EventArgs e)
{
Random slumpGenerator = new Random(); int tal;
tal = slumpGenerator.Next();
}
但遗憾的是,文本框中没有显示数字。而且我认为可能是因为我没有提到数字应该显示在我的文本框中,还有任何想法?
答案 0 :(得分:6)
确定 - 您没有在文本框中设置任何属性。你忽略了新生成的随机数。你需要这样的东西:
Random slumpGenerator = new Random();
// Or whatever limits you want... Next() returns a double
int tal = slumpGenerator.Next(0, 100);
textBox.Text = tal.ToString();
请注意,一般来说,创建许多Random
个实例并不是一个坏主意 - 但这并不像将其设为static
变量那么简单...有关详细信息,请参阅我的article on randomness。还要注意我是如何更改代码以声明变量并在单个语句中为其赋值 - 这通常比在一个语句中声明然后稍后为其赋值更好。
答案 1 :(得分:1)
private void button5_Click(object sender, EventArgs e)
{
Random slumpGenerator = new Random();
int tal = slumpGenerator.Next(0, 1000);
txtBxName.Text = tal.ToString();
}
答案 2 :(得分:1)
您可以使用加密服务提供商提供的实现来考虑RNGCryptoServiceProvider
线程安全类(System.Security.Cryptography
命名空间),它是加密随机数生成器(RNG)。
实现比使用System.Random
类要困难一些。
示例实现如下:
using System.Security.Cryptography;
...
private RNGCryptoServiceProvider rnd = new RNGCryptoServiceProvider();
private int NextInt32(int maxValue)
{
byte[] intBytes = new byte[4];
rnd.GetBytes(intBytes);
return Math.Abs(BitConverter.ToInt32(intBytes, 0)) % maxValue + 1;
}
// And your method with textBox
private void button5_Click(object sender, EventArgs e)
{
textBox.Text = NextInt32(1000).ToString();
}
您可以在问题Pros and cons of RNGCryptoServiceProvider
中详细了解RNGCryptoServiceProvider
答案 3 :(得分:1)
您需要在代码中添加一些内容。以下是您想要的全部代码......
private void button5_Click(object sender, EventArgs e)
{
Random slumpGenerator = new Random(); int tal;
tal = slumpGenerator.Next(0, 1000);
textBox.Text = tal.ToString();
}
您必须设置希望它生成的最小值和最大值。您还必须将最小值1置于您真正想要生成的值之下。即如果要生成10到20之间的数字,则需要将最小值设置为9,将最大值设置为20。
您还需要将值放入文本框等中以显示它。由于它是一个int,并且文本框的文本采用String
格式,因此您需要将其转换为代码末尾的String
:.ToString()
我知道这个答案很晚,但以后可能会帮到你!
答案 4 :(得分:1)
**Random Number Generation in C#.Net**
在编写代码之前添加两个名称空间
*使用System.Security;
使用System.Security.Cryptography; *
<强>代码:强>
复制并将以下代码放在按钮
中RNGCryptoServiceProvider xx = new RNGCryptoServiceProvider();
byte [] random_number=new byte [512];
xx.GetBytes(random_number);
foreach (var i in random_number)
{
textBox1.Text = i.ToString();
}
有关c#.net的更多详细信息,请参阅我的blogspot:mbthangamalai.blogspot.in