2012-09-23 89 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變量,並且可以從兩個按鈕單擊事件中訪問它們;

相關問題