2

我有点卡在我正在做的事情上。我有一个带有不同按钮的 Windows 窗体应用程序,每个按钮应该做不同的事情。现在我的问题:

在一个按钮上,当我按下它时,它应该生成随机数(例如 0-1000)并在文本框中显示数字,我在程序上也有。我试图在按钮上执行此代码:

private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); int tal; 
    tal = slumpGenerator.Next(); 
}

但不幸的是,文本框中没有显示任何数字。我认为这可能是因为我没有提到数字应该显示在我的文本框中,有什么想法吗?

4

5 回答 5

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变量那么简单......有关更多详细信息,请参阅我的关于随机性的文章。另请注意我如何更改代码以声明一个变量并在单个语句中为其分配一个值 - 这通常比在一个语句中声明然后稍后为其分配一个值更可取。

于 2013-01-09T16:05:03.520 回答
1
private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); 
    int tal = slumpGenerator.Next(0, 1000); 
    txtBxName.Text = tal.ToString();
}
  1. 您需要为“Random” .Next() 方法添加最小值和最大值。
  2. 您没有在任何地方设置文本框文本值。
于 2013-01-09T16:05:58.150 回答
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(); 
}

RNGCryptoServiceProvider您可以在 SO 问题中阅读更多信息: Pros and cons of RNGCryptoServiceProvider

于 2013-01-09T16:15:24.237 回答
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

于 2014-03-30T16:08:40.860 回答
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放在代码末尾来将其转换为 a:.ToString()

我知道这个答案很晚,但以后可能会对您有所帮助!

于 2014-01-16T00:46:23.137 回答