-4

我对这段代码有两个问题。我遇到了麻烦,因为提交按钮事件无法识别在文本框事件中计算的变量,并且因为文本框事件没有将我的 if 语句识别为语句。您可以在下面的评论中看到我遇到问题的地方。

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;

 namespace WindowsFormsApplication11 
 {
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }


    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        int points;

        int userInput = int.Parse(textBox1.Text);

        if (userInput == 0)

        {
            points == 5; //I CANNOT COMPILE BECAUSE APPARENTLY I AM NOT ALLOWED TO USE
                         THIS AS A STATEMENT? 
        }

        if (userInput == 1)

        { 
            points == 10;
        }

        if (userInput == 2)

        {
            points == 20;
        } 

        if (userInput ==3)

        {
            points == 30;
        }

        else

        {
            points == 40;

        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show = ("You have been awarded" + textBox1.points + "points");
    } //I WANT TO BE ABLE TO RETRIEVE THE POINTS CALCULATED USING THE CALCULATION IN
      TEXT BOX, BUT I CANNOT COMPILE THE BUTTON EVENT DOES NOT RECOGNIZE THE POINTS
      VARIABLE



    private void label1_Click(object sender, EventArgs e)
    {

    }
 }
}
4

5 回答 5

5

==符号是比较符号而不是赋值符号

你需要使用

if (userInput == 2) // this is a comparison
{ 
    points = 20; // this is an assignment
} 
于 2012-09-27T07:11:57.873 回答
1

首先,您已经声明了TextChanged事件的本地点,因此在您的按钮单击事件中将无法访问它。

textBox1.points是不对的,因为int points声明与 无关TextBox,您可以将点声明为类变量,例如

public partial class Form1 : Form
{
    int points =0;
    public Form1()
    {
       InitializeComponent();
    }
    //......// 

然后这将作为

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show( string.Format("You have been awarded {0} points",this.points));
}

您也使用=符号进行分配,所以points = 5;这样做是正确的

于 2012-09-27T07:11:06.233 回答
0

要为变量添加值,您应该编写:

points = 5;
于 2012-09-27T07:12:25.710 回答
0
using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;



namespace WindowsFormsApplication11 
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

public  int points=0;

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {


        int userInput = int.Parse(textBox1.Text);

        if (userInput == 0)

        {
            points = 5; 
        }

        if (userInput == 1)

        { 
            points = 10;
        }

        if (userInput == 2)

        {
            points = 20;
        } 

        if (userInput ==3)

        {
            points = 30;
        }

        else

        {
            points = 40;

        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show = ("You have been awarded" + points.ToString() + "points");
    } 



    private void label1_Click(object sender, EventArgs e)
    {

    }
 }
}
于 2012-09-27T07:14:54.683 回答
0

如前所述 - 您对赋值运算符和全局/局部变量感到困惑。

但是您的代码中还有其他几个“错误”。用户输入可能是简单的文本 - 所以会有例外,您应该使用 int.TryParse 而不是 int.Parse。您的代码中还有很多 ifs - 但它们不能一起触发,我建议使用 switch。当然,您应该尝试以某种方式命名您的常量,这将使您的代码更具可读性!

总体而言,您的代码可能如下所示:

int pointsAvarded = 0;

private void textBox1_TextChanged(object sender, EventArgs e)
{
    pointsAvarded = 0; //so you can be sure to use the latest input
    int userInput = 0;
    if (int.TryParse(textBox1.Text, out userInput))
      switch (userInput)
      {
          case 0:
            points = 5;
            break;
          case 1:
            points = 10;
            break;
          ...
          default:
            points = 40;
            break;
      }
}

private void button1_Click(object sender, EventArgs e)
{
    if (pointsAvarded != 0)
      MessageBox.Show("You have been awarded" + pointsAvarded + "points");
}
于 2012-09-27T07:25:45.023 回答