2016-10-20 232 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