C# 如何将变量从一个按钮发送到另一个按钮

C# 如何将变量从一个按钮发送到另一个按钮,c#,C#,到目前为止,我在我的一个程序中已经有了这一点,我希望它是这样的:如果你按下一个按钮来分解你输入的数字,你可以启用另一个按钮来获取数据并将其保存到输出文件中 private void button1_Click(object sender, EventArgs e) { string number = textBox1.Text; int digits = int.Parse(number); if (digits > 9999 || digits < 0)

到目前为止,我在我的一个程序中已经有了这一点,我希望它是这样的:如果你按下一个按钮来分解你输入的数字,你可以启用另一个按钮来获取数据并将其保存到输出文件中

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;
    }
private void按钮1\u单击(对象发送者,事件参数e)
{
字符串编号=textBox1.Text;
整数位数=int.Parse(数字);
如果(位数>9999 | |位数<0)
{
Show(“这不是一个有效的数字”);
}
其他的
{
整数千=位数/1000;
整数百位=(位数-(千位*1000))/100;
int tens=(数字-((百位数*100)+(千位数*1000))/10;
整数位数=(数字-((十位数*10)+(百位数*100)+(千位数*1000))/1;
label6.Text=数千.ToString();
label7.Text=数百.ToString();
label8.Text=tens.ToString();
label9.Text=one.ToString();
按钮2.Enabled=true;
}

到目前为止,我有这个功能,但对于button2,我希望通过单击button2生成的这些变量传递到button2,因此当您单击它时,它将使用这些变量写入文件。有什么想法吗?

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

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

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

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

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

private void button2_Click(object sender, EventArgs e)
{
    int thousands = Convert.ToInt32(label6.Text);
    int hundreds = Convert.ToInt32(label7.Text);
    //...etc
}
您也可以只设置全局变量而不是局部变量,即在任何方法调用之外声明int

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
}

不要经常这样做,因为如果你有太多的全局事件,事情可能会很快变得混乱,但对于一个简单的程序(看起来是这样的),它应该可以。

是asp.net应用程序,windows应用程序吗?使用方法而不是事件处理程序。因此,将功能封装到适当的方法中,如
验证,显示(bool-show),启用(bool-Enable),WriteFile(双值)
等。然后你可以将参数从一个方法传递到另一个方法。看看
全局变量
刚刚试过,现在一切都按照我希望的方式运行。我不敢相信我错过了。哈哈。