2016-10-20 278 views
0

我有兩個Windows,即MainWindows和Form2。在MainWindows上按下按鈕時,將出現Form2。在第二個窗口中,我有兩個文本框,當我單擊Form2的按鈕時,我添加了字符串來存儲這些文本框中的任何內容,但是它們設置爲null而不是存儲值。字符串設置爲空

private void remove_Button_Click(object sender, RoutedEventArgs e)   
{   
    string userValue; 

    userValue = user_Text.Text; 
    form2 form = new form2(); 
    form.Show(); 
    form.Replace_Button.Click += Replace_Button_Click; 

    } 

    void Replace_Button_Click(object sender, RoutedEventArgs e) 
    { 
    form2 form = new form2(); 
    replaceFirstValue = form.firstValue_TextBox.Text; 
    replaceLastValue = form.lastValue_TextBox.Text; 
    repFirstConversion = int.TryParse(replaceFirstValue, out repFirstInt); 
    repLastConversion = int.TryParse(replaceLastValue, out repLastInt); 
    if (repFirstConversion == false) 
     this.Close(); 
       //MessageBox.Show("Please Enter Integer");      
    } 

我在form2.xaml.cs中沒有任何代碼。

+1

只是關於你的代碼的一個小記錄:如果你寫'if(!repFirstConversion)'而不是'if(repFirstConversion == false)',它通常更具可讀性。 – haindl

+0

@haindl,謝謝 –

回答

2

您在兩個事件處理程序中創建了一個新的form2實例,因此您有兩種不同的形式。後者對前者一無所知,只會有默認值。

您必須僅創建form2的一個實例,並將其引用存儲在成員變量中,然後使用它來檢索值。

private form2 form; // A member variable to hold a reference to the form 

private void remove_Button_Click(object sender, RoutedEventArgs e) 
{ 
    ... 
    form = new form2(); // Set the member variable 
} 

而且從Replace_Button_Click刪除您創建的form2一個新實例的第一行。

+0

我理解了你的前兩行,但我不知道該怎麼做,因爲我對C#很陌生,並且對它沒有太多的想法。 –

+0

@ArsalanKhattak我加了一個例子。基本上將該方法中的變量移入類中,以便其值保持不變。然後,您創建一次表單,並在其他按鈕處理程序中使用相同的表單。 –

+2

研究的課題叫做「範圍」。這應該教你你需要知道什麼。在這種情況下,當它需要成爲全局的時候,這個表單就是本地範圍。 – Equalsk