-2

我不知道如何在文本框中添加值。这是代码:

       private void starecivilaComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (starecivilaComboBox.SelectedIndex == 0)
        {
            MessageBox.Show("This selection is not valid!");
        }
        else if (starecivilaComboBox.SelectedIndex == 1)
        {
            int score = 4;
        }
        else if (starecivilaComboBox.SelectedIndex == 2)
        {
            int score = 1;
        }
        else if (starecivilaComboBox.SelectedIndex == 3)
        {
            int score = 3;
        }
        else if (starecivilaComboBox.SelectedIndex == 4)
        {
            int score = 2;
        }

    }

我想在文本框中插入分数的值,所以它会显示我从组合框中选择的每个项目的分数。我试过这个:

        private void scoringTextBox_TextChanged(object sender, EventArgs e)
    {
        scoringTextBox.Text = score.toString();
    }

但它不承认它。错误是:此上下文中不存在名称“score”。我怎样才能使这项工作?

谢谢你。

4

7 回答 7

4

您必须在 ComboBox SelectedIndexChanged 处理程序之外声明变量score 。您在处理程序中声明它并且它仅在方法中使用,而不是在整个类中(在您的情况下不是整个形式)。

public class Form1
{
    int score = 0;
    //somewhere in the code
    score = 1; //there is no need to specify 'int' here - you will create an local variable with the same name then
}

我建议你通过教程来学习,因为这个问题很简单。

于 2013-06-21T16:50:50.373 回答
4

尽管@psNytrancez 的答案对您来说是最简单的,但如果不了解变量的工作原理,您将不会在 C# 中走得太远。

问题在于如下所示的行:

else if (starecivilaComboBox.SelectedIndex == 1)
{
    int score = 4;
}

这意味着您创建了一个变量“score”,但该变量只存在于两个大括号“{”和“}”之间。为了真正保持一个值,你需要扩大它的范围(教学视频)。如果您编辑所有这些行以仅阅读

else if (starecivilaComboBox.SelectedIndex == 1)
{
    score = 4;
}

而是像这样把它放在方法声明之外

int score =0;

private void starecivilaComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
   //the rest of the method.

那你应该没事。

于 2013-06-21T16:59:09.207 回答
2

这是因为您在 starecivilaComboBox_SelectedIndexChanged 方法中声明了您的分数,因此它是该方法的本地并且不能在它之外访问。

于 2013-06-21T16:51:52.527 回答
2

如上所述,您必须在您的私有方法之外但在您的类中声明分数。代码应与此类似:

private int score = 0;

private void starecivilaComboBox_SelectedIndexChanged(object sender, EventArgs e)
{

    if (starecivilaComboBox.SelectedIndex == 0)
    {
        MessageBox.Show("This selection is not valid!");
    }
    else if (starecivilaComboBox.SelectedIndex == 1)
    {
        score = 4;
    }
    else if (starecivilaComboBox.SelectedIndex == 2)
    {
        score = 1;
    }
    else if (starecivilaComboBox.SelectedIndex == 3)
    {
        score = 3;
    }
    else if (starecivilaComboBox.SelectedIndex == 4)
    {
        score = 2;
    }

}

private void scoringTextBox_TextChanged(object sender, EventArgs e)
{
    scoringTextBox.Text = score.toString();
}
于 2013-06-21T17:01:22.920 回答
0
 private void starecivilaComboBox_SelectedIndexChanged(object sender, EventArgs e)
{

    if (starecivilaComboBox.SelectedIndex == 0)
    {
        MessageBox.Show("This selection is not valid!");
    }
    else if (starecivilaComboBox.SelectedIndex == 1)
    {
        scoringTextBox.Text = "4";
    }
    else if (starecivilaComboBox.SelectedIndex == 2)
    {
        scoringTextBox.Text = "1";
    }
    else if (starecivilaComboBox.SelectedIndex == 3)
    {
        scoringTextBox.Text = "3";
    }
    else if (starecivilaComboBox.SelectedIndex == 4)
    {
        scoringTextBox.Text = "2";
    }

}
于 2013-06-21T16:56:15.660 回答
0

在这之后做

else if (starecivilaComboBox.SelectedIndex == 4)
    {
        int score = 2;
    }

添加这个

scoringTextBox.Text = score.toString();
于 2013-06-21T16:56:32.380 回答
0

变量/对象分数的范围是您尝试访问范围有限的变量的问题(仅限函数级别)

只需创建一个私有变量 score 以便可以通过类访问它。

于 2013-06-22T10:51:39.580 回答