2012-09-23 90 views
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,我想这是从点击按钮,一个产生这些变量传递给BUTTON2所以当你点击它,它会用这些变量来写入文件。有任何想法吗?

+0

它是asp.net应用程序,Windows应用程序? – RollRoll

+2

使用方法而不是事件处理程序。因此,将函数封装到适当的方法中,例如'Validate,Display(bool show),Enable(bool enable),WriteFile(double value)'等等。然后你可以将参数从一个方法传递到另一个方法。 –

+0

看看'全局变量' –

回答

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 
} 

,如果你有一大堆的全局东西可以得到不这样做太频繁混乱很快,但对于一个简单的程序(这似乎是)应该没问题。

+0

刚刚尝试过,现在一切都按照我想要的方式工作。我不能相信我错过了这一点。大声笑。 – Skynet

0

,如果它是一个asp.net web表单应用程序,您可以保存视图状态的VAR和从其他按钮来检索他们点击

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

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

如果是控制台,Windows应用程序,Windows服务OU可以只在事件范围外声明int变量,并且可以从两个按钮单击事件中访问它们;

相关问题