将变量传递给按钮单击事件

时间:2016-02-15 13:30:49

标签: c# parameter-passing

我通过Windows窗体中的一个非常简单的游戏开发我的近乎零的c#编程。在我的最新表单中,我使用从其他表单传递的变量声明新变量。但是,我无法从其他方法访问变量。

public Form3(int str, int dex, int vit, int arc, int hp, int mp, int sp, string name, string charClass)
    {
        InitializeComponent();
        int point = 0;
        int level = 1;
        int exp = 0;
        int hpPotions = 1;
        int gold = 20;
        int travelDistance = 1;
        nameBox.Text = name;
        maxhpBox.Text = hp.ToString();
        curhpBox.Text = hp.ToString();
        maxmpBox.Text = mp.ToString();
        curmpBox.Text = mp.ToString();
        maxspBox.Text = sp.ToString();
        curspBox.Text = sp.ToString();
        strBox.Text = str.ToString();
        dexBox.Text = dex.ToString();
        vitBox.Text = vit.ToString();
        arcBox.Text = arc.ToString();
        pointsBox.Text = point.ToString();
        levelBox.Text = level.ToString();
        expBox.Text = exp.ToString();
        classBox.Text = charClass;
    }

    public int TravelDecider()
    {
        Random travelInt = new Random();
        int travelValue = travelInt.Next(1, 10);
        return travelValue;
    }
    private void Form3_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {

    }

    private void rightBtn_Click(object sender, EventArgs e)
    {
        int travelValue = TravelDecider();

        if (travelValue == 1)
        {
            locdescBox.Text = "During your travels, you encounter nothing of interest along the way. There is the occasional merchant or villager along the road, all seemingly bent on getting to their destination in good time.";
            travelDistance++;
        }
    }

带有travelDistance ++的最后一段代码是我的问题,因为它在当前环境中不存在。

我在其他网站上找到的其他一些使用get的解决方案;组; (我一点也不熟悉)和其他超越我的选择。

很抱歉,因为我确定这是一个非常初学的错误,而且老实说我不确定Overflow是否会欢迎这个级别低的人,所以很抱歉,如果这是案件。如果在其他地方,我应该开始发展与此相关的技能,我欢迎这个建议。我很感激帮助。

2 个答案:

答案 0 :(得分:2)

通过在方法之外声明它,可以使travelDistance具有更高的范围。从而使该类中的所有方法都可以访问它。

private int travelDistance = 1;

public Form3(int str, int dex, int vit, int arc, int hp, int mp, int sp, string name, string charClass)
{
    ...
}

答案 1 :(得分:0)

现在所有变量都在构造函数中声明,这使得它们成为局部变量,这基本上意味着它们只能在声明它们的函数中访问。 (查看https://en.wikipedia.org/wiki/Local_variablehttps://msdn.microsoft.com/en-us/library/aa691170%28v=vs.71%29.aspx了解详情)

你需要知道的其他一切都在戴维斯的回答中。