首页 > 解决方案 > 当前上下文中不存在名称“svar”

问题描述

我对编程很陌生,我正在为我的编程课编写一个简短的刽子手游戏,我有两个私人空白,一个是你更改文本框中的文本以获得正确答案,一个是你猜一个字符。我需要将变量“svar”从第一个实例转移到另一个实例,当我尝试在第二个实例中使用变量“svar”时,我收到错误消息“当前上下文中不存在名称“svar”

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

        private void TbxSvar_TextChanged(object sender, EventArgs e)
        {
            if (tbxSvar.TextLength == 6)
            {
                pbxGubbe.Top = 6;
                tbxVisa.Text = "??????";
                tbxGissa.Enabled = true;
                string svar = tbxSvar.Text;
                tbxSvar.Text = "";
            }
            else
            {

                tbxVisa.Text = "";
            }

        }

        private void TbxGissa_TextChanged(object sender, EventArgs e)
        {
            if (tbxGissa.Text == "") return;
            string gissning = tbxGissa.Text;
            int index = svar.indexOf(gissning);

        }
    }

标签: c#

解决方案


您已svar在方法中定义为变量,因此它不会在其他地方可见(除非您将其作为方法参数传递)。而是将其定义为类中的一个字段

public partial class Form1 : Form
    {      
        string svar;  // <----------- place here.  Now it is a 'field'

        public Form1()
        {
            InitializeComponent();
        }

        private void TbxSvar_TextChanged(object sender, EventArgs e)
        {
            if (tbxSvar.TextLength == 6)
            {
                pbxGubbe.Top = 6;
                tbxVisa.Text = "??????";
                tbxGissa.Enabled = true;
                svar = tbxSvar.Text;  // <---------- use svar here
                tbxSvar.Text = "";
            }
            else
            {

                tbxVisa.Text = "";
            }

        }

        private void TbxGissa_TextChanged(object sender, EventArgs e)
        {
            if (tbxGissa.Text == "") return;
            string gissning = tbxGissa.Text;
            int index = svar.indexOf(gissning); // <---------- ...and here

        }
    }

推荐阅读