我正在尝试声明int
private int i = 15 - textBox1.Text.Length;
作为此代码的全局整数
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
i = 15 - textBox1.Text.Length;
timer1.Enabled = true;
timer1.Start();
}
else
{
timer1.Enabled = false;
}
}
private int i = 15 - textBox1.Text.Length; //this wont work but i need it to
private int y = 15 - textBox1.Text.Length; //this wont work either but i also need it to
private void timer1_Tick(object sender, EventArgs e)
{
if (i <= 11)
{
i++;
string ping = new string(' ', i) + textBox1.Text;
label1.Text = ping;
if (i == 10)
{
y = 11;
}
}
else if (y > 0)
{
y--;
string pong = new string(' ', y) + textBox1.Text;
label1.Text = pong;
if (y == 0)
{
i = 0;
}
}
}
但我收到了错误
字段初始值设定项不能引用非静态字段,方法或属性'text_test.Form1.textBox1'
帮助?
答案 0 :(得分:3)
您正在尝试设置变量i
的初始值(顺便说一下,这是一个错误的变量名称 - 变量名称应该是描述性的!)。
您需要在工作流程的某个位置设置i
的值 - 没有任何上下文,我猜可能会在OnTextChange
事件或类似的事件中。
答案 1 :(得分:2)
private int i;
之后(在构造函数或其他东西中)做
i = textBox1.Text.Length;
答案 2 :(得分:1)
了解代码运行的顺序非常重要。您将字段声明放在代码中间,也许希望在运行checkBox1_CheckedChanged()方法之后将其初始化。但不,在类的构造函数运行之前,字段已初始化。
这永远不可能结束。 textBox1对象尚不存在,它由InitializeComponent()方法中的构造函数创建。它肯定没有长度,直到很多以后用户输入内容时才会发生。编译错误可以帮助您摆脱困境。
我不知道代码试图做什么。但是假设i
变量需要用某些东西进行初始化,那么当用户在文本框中键入内容时就会这样做。这使Text.Length属性发生了变化。为文本框'TextChanged事件添加事件处理程序:
private void textBox1_TextChanged(object sender, EventArgs e) {
if (textBox1.Text.Length <= 15) {
i = 15 - textBox1.Text.Length;
}
}