3

到目前为止,我的一个程序中有这个,我希望它是这样的,如果你按下一个按钮来分解你输入的数字,你可以启用另一个按钮来获取该数据并将其保存到一个 outfile 中。

private void button1_Click(object sender, EventArgs e)
{
    string number = textBox1.Text;
    int digits = int.Parse(number);
    if (digits > 9999 || digits < 0)
    {
        MessageBox.Show("That is not a valid number");
    }
    else
    {
        int thousands = digits / 1000;
        int hundreds = (digits - (thousands * 1000)) / 100;
        int tens = (digits - ((hundreds * 100) + (thousands * 1000))) / 10;
        int ones = (digits - ((tens * 10) + (hundreds * 100) + (thousands * 1000))) / 1;
        label6.Text = thousands.ToString();
        label7.Text = hundreds.ToString();
        label8.Text = tens.ToString();
        label9.Text = ones.ToString();
        button2.Enabled = true;
    }

到目前为止,我有这个并且它可以工作,但是对于 button2,我希望通过单击按钮 1 生成的这些变量传递给 button2,因此当您单击它时,它将使用这些变量写入文件。有任何想法吗?

4

2 回答 2

1

如果它是一个 asp.net webforms 应用程序,您可以将变量保存在视图状态并从其他按钮单击检索它们

//setting
ViewState["thousands "] = thousands;

//Reading
int thousands = Convert.ToInt32(ViewState["thousands "]);

如果它是控制台、windows 应用程序、windows 服务,你可以在事件范围之外声明 int vars,你就可以从两个按钮单击事件中访问它们;

于 2012-09-23T20:12:11.253 回答
1

有几种方法,但是看看你已经拥有的,为什么不把标签重新读回你想要的变量呢?

private void button2_Click(object sender, EventArgs e)
{
    int thousands = Convert.ToInt32(label6.Text);
    int hundreds = Convert.ToInt32(label7.Text);
    //...etc
}

您也可以只设置全局变量而不是局部变量,即在任何方法调用之外声明您的整数

int thousands;
int hundreds;
int tens;
int ones;
private void button1_Click(object sender, EventArgs e)
{
    //...code
    thousands = digits / 1000;
    hundreds = (digits - (thousands * 1000)) / 100;
    tens = (digits - ((hundreds * 100) + (thousands * 1000))) / 10;
    ones = (digits - ((tens * 10) + (hundreds * 100) + (thousands * 1000))) / 1;
}
private void button2_Click(object sender, EventArgs e)
{
    Console.WriteLine(thousands); //...etc
}

不要太频繁地这样做,因为如果你有大量的全局变量,事情会很快变得混乱,但对于一个简单的程序(这似乎是)来说应该没问题。

于 2012-09-23T20:16:18.100 回答