我想在文本更改时在文本框中创建一个随机数。 我的问题是,当我更改文本字段时,随机数总是会改变。我只想创建一次变量。怎么做?
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1() // constructor of Form1
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
Rand m = new Rand();
textBox1.Text = m.myRand.ToString();
}
}
public class Rand
{
public int myRand = new Random().Next(10);
public Rand() { }
}
}
答案 0 :(得分:2)
如果我正确理解了这个问题,你可以重构m成为Form1的一个字段:
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
Rand m = new Rand(); // m is generated only once
public Form1() // constructor of Form1
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Text = m.myRand.ToString();
}
}
public class Rand
{
public int myRand = new Random().Next(10);
public Rand() { }
}
}
答案 1 :(得分:1)
在Form1中创建两个变量:
Rand number;
bool firstime = true;
和textBox1_TextChanged():
if(firstime)
{
number = new Rand();
textBox1.Text = number.myRand.ToString();
firstime = false;
}
答案 2 :(得分:1)
您可以让您的类静态并使用静态myRand
变量。
public static class Rand
{
public static int myRand;
static Rand() {
myRand = new Random().Next(10);
}
}
现在您甚至不需要创建新类。只做textBox1.Text = Rand.myRand;
myRand
将在对象的生命周期中初始化一次。
答案 3 :(得分:1)
在语句后面添加代码:InitializeComponent();这是表单的构造函数。在全局空间中声明变量,而不是在函数内部。
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
Rand m = new Rand();
public Form1() // constructor of Form1
{
InitializeComponent();
textBox1.Text = m.myRand.ToString();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
public class Rand
{
public int myRand = new Random().Next(10);
public Rand() { }
}
}